Комета - это общий термин, используемый для описания технологии, используемой для "проталкивания" данных с веб-сервера на подключенные веб-клиенты. В отличие от "типичного" веб-соединения, в котором клиент должен запросить данные, прежде чем сервер сможет ответить этими данными, в реализациях Comet данные могут быть отправлены с сервера без запроса этих данных клиентом. Комета может быть реализована разными способами: длинный опрос, обратный вызов, вечный фрейм и т. Д.

Комета - это общий термин, используемый для описания технологии, используемой для "проталкивания" данных с веб-сервера на подключенные веб-клиенты. В отличие от "типичного" веб-соединения, в котором клиент должен запросить данные, прежде чем сервер сможет ответить этими данными, с реализациями Comet данные могут быть отправлены с сервера без запроса этих данных клиентом.

Комету можно реализовать разными способами:

  • длинный опрос,
  • callback-опрос,
  • навсегда-кадр или
  • с использованием технологий html5, таких как отправленные сервером события и веб-сокет.

У каждого есть ряд плюсов и минусов, таких как совместимость, междоменные возможности и поддержка функций (например, обнаружение отключений и т. Д.).

Каждый сервер Comet обычно состоит из двух основных компонентов:

  1. Серверный компонент. Этот компонент отвечает за обработку соединений с клиентами, и на него затрачивается много усилий на разработку; небольшие оптимизации в этом коде приводят к огромным изменениям в целом (например, если один клиент хранит 1 КБ дополнительных данных, а у вас подключено 30000 клиентов, это дополнительные 30 МБ данных, которые сервер должен хранить и отслеживать.
  2. Клиентская составляющая. Этот компонент отвечает за получение данных от серверного компонента. Самый распространенный клиент написан на JavaScript для использования с веб-браузером, но клиенты часто могут быть написаны и на других языках, чтобы облегчить интеграцию с приложениями толстого клиента. Например, у Jetty есть клиент, написанный на Java, а у WebSync есть клиенты, написанные для Silverlight и стандартного.NET.

Реализации общего языка

Существует большое количество фреймворков, которые могут поддерживать приложение на основе Comet. Большинство из них являются автономными серверами, за исключением WebSync, который работает поверх IIS.

  1. Java: Jetty, Rupy
  2. .NET: WebSync
  3. Python: витой
  4. Рубин: машина событий
  5. JavaScript: Node.js
  6. Scala: Лифт
  7. C++: CppCMS

Дополнительная информация

Некоторые хорошие ресурсы по Comet включают:

  1. http://ajaxpatterns.org/HTTP_Streaming
  2. http://cometdaily.org/