Xmpp Vs Websocket

Я собираюсь создать веб-сайт, на котором есть чат в реальном времени. Я знаю, что он может быть реализован с использованием протоколов xmpp или websocket. Я также знаю, что протокол xmpp был разработан в 1999 году, и я предполагаю, что он должен быть зрелым в настоящее время. С другой стороны, протокол websocket был разработан в 2011 году.

  • Какова была необходимость в websocket, если xmpp был хорош в обработке разговоров в режиме реального времени?
  • Каковы основные отличия между двумя протоколами?
  • И когда я должен выбрать один из них над другим?

Ответ 1

Короткий ответ - "оба".

XMPP - это набор протоколов приложений для ведения чата в реальном времени (и многое другое, если на то пошло) - он должен каким-то образом переноситься через сеть, поэтому вам нужно привязку к транспорту. Для XMPP существует три основных транспортных привязки -

  • TCP/IP, что обычно используется в Интернете с использованием собственных клиентов на устройствах
  • HTTP (называемый BOSH), который традиционно используется при использовании XMPP в браузере (поскольку TCP-IP недоступен для приложений Javascript в браузере)
  • Websockets, который используется при использовании XMPP в современном браузере.

Итак, если вы разрабатываете приложение чата в браузере, вы должны выбрать XMPP в качестве протокола приложения, и в качестве сетевого транспорта вы будете использовать веб файлы (в современном браузере) или BOSH (в более старом браузере). Если вы используете библиотеку XMPP для Javascript, например, Stanza.io(https://github.com/otalk/stanza.io), она будет поддерживать оба, и вы просто будете думать о "XMPP", а не транспортный уровень, кроме настройки, когда вам нужно сообщить, к какой конечной точке подключиться.

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

Ответ 2

В принципе, вы сравниваете две разные вещи друг с другом. XMPP - это протокол приложения, в то время как WebSockets - это транспортный протокол.

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