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