html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Comet — обзорная статья

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

Что такое COMET?


Comet неологизм, описывающий модель работы веб-приложения. В обычном цикле обработки запроса, клиент инициирует соединение и запрашивает интересующий его документ. После отдачи данных, связь разрывается. В случае с Сomet, сервер инициирует соединение и отправляет клиенту сообщение. Типичный пример Comet это оповещения в Facebook, Twitter, чат в Gmail и др.




Существующие подходы


Существует несколько основных подходов как достичь желаемого результата.

* Polling: Достатоно простой метод, основанный на переодическом опрашивании сервера;
* Long poll: Способ при котором клиент открывает соединение и не закрывает его до тех пор, пока не наступит событие. По наступлению события, клиент получает оповещение и снова открывает соединение;
* «бесконечный» iframe: Метод основан на особенностях загрузки html документов. Создается невидимый iframe, который читает «бесконечный» файл. При наступлении события, добавляется новая строка в файл. Строка может быть кодом javascript, который исполниться, при получении на клиенте;
* Flash сокеты: Простой метод, при загрузке страницы, создается сокет, который слушает сервер. При наступлении события, сервер посылает команду клиенту на слушающий сокет, на определенный порт;
* HTML5 WebSockets: Метод похож на метод с Flash сокетом, за исключением того, что сокет создается нативными средствами браузера.
* другие методы

У каждого из методов есть свои плюсы и минусы. Ниже приведена страница сравнения основанная на собственном опыте.
Метод Сложность реализации Поддерживаемые браузеры Требовательность к ресурсам
Polling Просто Все возможные браузеры В зависимости от настроек, может создавать достаточно большой трафик
Long poll Средне Все возможные браузеры На каждого клиента создается соединение, которое остается открытым, до тех пор, пока не произойдет событие или пользователь не уйдет со страницы
«бесконечный» iframe Много нюансов, в зависимости от браузера Практически все Соединение постоянно открыто
Flash сокеты Достаточно просто Все браузеры, с поддержкой Flash
HTML5 WebSocet Просто Chrome, +


Технологии


Реализовывать самостоятелньо один из методов — достаточно трудоемкий процесс, за исключением наверно обычного pollingа. Поэтому целесообразно использовать готовые решения. Часто они реализованы как самостоятельные push-сервера. Для взаимодействия с приложением, могут применяться различные интерфейсы, зависящие от конкретной реализации. Как пример это может быть js api, RESTfull запросы, протокол AMQP и другие.

Тут можно посмотреть таблицу наиболее популярных комерческих и свободных разработок:



Помимо этого стоит отдельно отметить такие разработки как APE, Hookbox, Juggernaut и Mochiweb.

Интеграция с ruby


Первое что выдает google, при наборе: «comet + ruby» это библиотека Juggernaut. На сайте есть отличная документация. Устанавливается все за 5 минут. В принципе достойное решение для внутренних проектов. Некоторые его используют также в production. Из недостатков следует отметить два момента: первый, необходимо иметь установленный flash на браузере и второй, существуют проблемы при работе из-за файрвола.

Следующий вариант APE (Ajax Push Engine). Довольно новая разработка. Состоит из трех основных частей: JavaScript framework, Push сервера и протокола. Проект бесплатный, выдерживает большие нагрузки и работет во всех браузерах. Для взаимодейтсвия с приложением, использует свой протокол, команды передаются в формате JSON. Интеграция с Rails приложением немного болезненна из-за несоответсвия путей но тем не менее, запустить можно достаточно быстро. Из минусов можно выделить то, что JavaScript framework достаточно много весит.

Один из самых удобных и надежных решений по моему мнению — hookbox. Написан теми же разработчиками что и orbited. Проект был существенно упрощен и исправлены многие баги. Состоит также из трех компонентов: push сервер, js библиотека и протокол. Интеграция с приложением реализована с помощью REST запросов. Два недостатка которые были обнаружены: проблема с мигающим курсором в Opera и некоторые проблемы с push сервером, при длительном простое.

Полезные ресурсы


Общая информация


Статья в википедии
HTTP streaming
Материалы с сайта javascript.ru
Comet maturity guide

Nginx & Comet
Nginx http push server

WebSockets

Реализации


Hookbox
Mochiweb
Juggernaut
Ajax Push Engine

Примеры реализации в ruby и RoR


Comet & Ruby & Redis
Comet demo for ruby on rails
Ruby & Orbited
Orbited & Ruby
APE & Rails

Comet & Orbited #1
Comet & Orbited #2
Comet & Orbited #3

php simple chat example
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

2

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • kolexandr.13
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции