Описание тега comet
Комета - это общий термин, используемый для описания технологии, используемой для "проталкивания" данных с веб-сервера на подключенные веб-клиенты. В отличие от "типичного" веб-соединения, в котором клиент должен запросить данные, прежде чем сервер сможет ответить этими данными, с реализациями Comet данные могут быть отправлены с сервера без запроса этих данных клиентом.
Комету можно реализовать разными способами:
- длинный опрос,
- callback-опрос,
- навсегда-кадр или
- с использованием технологий html5, таких как отправленные сервером события и веб-сокет.
У каждого есть ряд плюсов и минусов, таких как совместимость, междоменные возможности и поддержка функций (например, обнаружение отключений и т. Д.).
Каждый сервер Comet обычно состоит из двух основных компонентов:
- Серверный компонент. Этот компонент отвечает за обработку соединений с клиентами, и на него затрачивается много усилий на разработку; небольшие оптимизации в этом коде приводят к огромным изменениям в целом (например, если один клиент хранит 1 КБ дополнительных данных, а у вас подключено 30000 клиентов, это дополнительные 30 МБ данных, которые сервер должен хранить и отслеживать.
- Клиентская составляющая. Этот компонент отвечает за получение данных от серверного компонента. Самый распространенный клиент написан на JavaScript для использования с веб-браузером, но клиенты часто могут быть написаны и на других языках, чтобы облегчить интеграцию с приложениями толстого клиента. Например, у Jetty есть клиент, написанный на Java, а у WebSync есть клиенты, написанные для Silverlight и стандартного.NET.
Реализации общего языка
Существует большое количество фреймворков, которые могут поддерживать приложение на основе Comet. Большинство из них являются автономными серверами, за исключением WebSync, который работает поверх IIS.
- Java: Jetty, Rupy
- .NET: WebSync
- Python: витой
- Рубин: машина событий
- JavaScript: Node.js
- Scala: Лифт
- C++: CppCMS
Дополнительная информация
Некоторые хорошие ресурсы по Comet включают: