Я бы настоятельно рекомендовал потратить некоторое время на Comet, но я не знаю фактической реализации или библиотеки, которую вы могли бы использовать.
Для своего рода «панели управления callcenter» веб-приложения, в которой использовался агент обновления и состояние очереди вызовов для живого Callcenter, мы разработали собственное решение, которое работает, но далеко от библиотеки, которую вы могли бы использовать.
Что мы сделали, так это внедрили на сервере небольшой сервис, который общается с телефонной системой, ждет новых событий и сохраняет фотографию ситуации. Этот сервис предоставляет небольшой веб-сервер.
Наши веб-клиенты подключаются через HTTP к этому веб-серверу и запрашивают последнюю фотографию (закодированную в формате XML), отображают ее и затем снова отправляют, запрашивая новую фотографию. Веб-сервер на данный момент может:
- Вернуть новое фото, если оно есть
- Заблокируйте клиента на несколько секунд (30 в нашей настройке), ожидая, когда какое-либо событие произойдет и изменит фотографию. Если в этот момент событие не было сгенерировано, оно возвращает ту же фотографию только для того, чтобы соединение оставалось в живых, а не для таймаута клиента.
Таким образом, когда клиенты опрашивают, они получают ответ в течение от 0 до 30 секунд. Если новое событие уже было сгенерировано, оно получает его немедленно), в противном случае оно блокируется, пока не будет сгенерировано новое событие.
Это в основном опрос, но это несколько умный опрос, чтобы не перегревать веб-сервер. Если Comet не ваш ответ, я уверен, что это можно реализовать с использованием той же идеи, но с использованием более широкого AJAX или кодирования в JSON для достижения лучших результатов. Это было разработано до AJAX-эры, поэтому есть много возможностей для улучшения.
Если кто-то может предоставить действительно легкую реализацию этого, отлично!