XMPP BOSH против COMET - PullRequest
       20

XMPP BOSH против COMET

7 голосов
/ 07 сентября 2011

Я хочу написать приложение для чата в реальном времени, и мне нужно решить, какие технологии использовать.

В чем различия между этими технологиями и какие вы предпочитаете и почему?

WebSockets не вариант, так как он не готов к бою в дикой природе

Спасибо

1 Ответ

28 голосов
/ 07 сентября 2011

Вам следует прочитать вопрос "Почему BOSH не более популярен, особенно как альтернатива WebSockets и Long-Polling" . Канака дает фантастический ответ, и я уверен, что он решит ваши проблемы с WebSockets.WebSocket абсолютно «готов к бою в дикой природе».

BOSH и Comet, на мой взгляд, это одно и то же.BOSH расшифровывается как «Двунаправленные потоки поверх синхронного HTTP», и хотя спецификация BOSH гласит:

BOSH, технология, определенная в этой спецификации, по существу обеспечивает «раскрытие»альтернатива долгоживущему двунаправленному TCP-соединению.Это зрелая, полнофункциональная технология, которая широко внедряется и внедряется с 2004 года. Насколько нам известно, это была первая из многих подобных технологий, которая теперь включает методологию Comet, формализованную в Байе, а также в протоколе Web Socket Protocol иОбратный HTTP.

Я точно знаю, что серверы Comet существуют примерно с 2001 года, так как я работал в компании ( Caplin Systems ), которая имела и до сих пор имеетСервер Comet.

Причина, по которой я говорю, что на фундаментальном уровне это одно и то же, заключается в том, что оба первоначально (см. ниже) полагались на два HTTP-соединения.Первый - это обратный канал, который либо является длительным соединением потоковой передачи HTTP, либо используется для длительного опроса HTTP.Второе соединение недолговечно и используется для отправки команд, таких как запросы на подписку.Эти два соединения позволили симулировать двунаправленную связь.

Таким образом, на фундаментальном уровне BOSH и Comet используют одинаковые механизмы для обмена данными между сервером и клиентом к серверу (клиент является веб-браузером или другимподдерживается веб-клиент).Отличие BOSH заключается в том, что он предлагает дополнительные детали в своем протоколе и был разработан с учетом XMPP.Любой сервер Comet может быть разработан с соблюдением стандартов, определенных в спецификации BOSH.

Все это говорит о том, что серверы Comet и BOSH, несомненно, будут предлагать альтернативные транспортные механизмы.Они будут включать потоковую передачу HTTP, длинный опрос HTTP, стандартный опрос HTTP и WebSockets.

Итак, если вам нужны подробности, предоставляемые BOSH и XMPP, вы, вероятно, захотите рассмотреть технологический стек, созданный с учетом BOSH и XMPP.Если вы хотите отправлять простые сообщения без дополнительной полезной нагрузки, присущей BOSH и XMPP, или если вы хотите создать свою собственную «добавленную стоимость» для своего собственного протокола, тогда, вероятно, лучшим решением будет нечто, помеченное как сервер Comet.

Если вы решите использовать существующий технологический стек, а не разрабатывать решение с нуля, то весьма вероятно, что решение будет использовать WebSockets, возможно, так как они предлагают стандартизированный и эффективный механизм двунаправленной связи.

Я впервые попробовал составить диаграмму стека веб-технологий в реальном времени, которую вы можете увидеть ниже.Надеюсь, это немного поможет:

Realtime Web Technology Stack

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

...