Короткий ответ - «оба».
XMPP - это набор протоколов приложений для ведения чата в реальном времени (и многое другое, если на то пошло) - он должен каким-то образом переноситься по сети, поэтому вам необходимо привязать транспорт. Есть три основных транспортных привязок для XMPP -
- TCP/IP, который является то, что обычно используют в Интернете с местными клиентами на устройствах
- HTTP (так называемый BOSH), которая является то, что одна традиционно используется, когда используя протокол XMPP в браузере (поскольку TCP-IP недоступен для приложений Javascript в браузере)
- Веб-узлы, которые используются при использовании XMPP в современном браузере.
Итак, если вы разрабатываете приложение чата в браузере, вы должны выбрать XMPP в качестве протокола приложения, и вы будете использовать веб-порты (в современном браузере) или BOSH (в более старом браузере), поскольку сетевой транспорт. Если вы используете библиотеку XMPP для Javascript, например, Stanza.io (https://github.com/otalk/stanza.io), она будет поддерживать и то и другое, и вы просто будете думать о «XMPP», а не о транспортном уровне, кроме настройки, когда вам нужно сказать, какая конечная точка для подключения.
(Вы не можете использовать «просто websockets» для чата - вы можете использовать веб-сайты без XMPP, но на самом деле это означает, что вы изобретаете свой собственный протокол уровня приложения для чата, и ваши шансы - чтобы сохранить много времени и головных болей, воспользовавшись работой, которая уже началась с написания одного с полезными свойствами (безопасность, идентификация, расширяемость и т. д.) и для которых существуют существующие библиотеки и серверы, перейдя на XMPP.)
Я недавно наткнулся на одну и ту же проблему, я должен был ответить за WebSockets. Node.JS становится чрезвычайно популярным языком, и по праву он должен быть. XMPP в порядке - однако, на мой взгляд, вы ограничиваете себя движением вперед, решив пойти на эту более старую технологию. Узел, однако, является сложным зверем, и вам нужно подойти к нему по-другому, как бы вы использовали JavaScript. Если вы достаточно терпеливы, я бы предложил уйти в Node - не только для этого, но и позволит вам расшириться в других областях с большей легкостью. – JustSteveKing
XMPP - это расширяемый протокол обмена сообщениями и присутствия, Websocket - это протокол, обеспечивающий полнодуплексную связь через порт 80. Вы сравниваете Яблоки с апельсинами. – Flow
@Flow: Я, по вашему мнению, сравниваю яблоки с апельсинами. Но то, что я прошу, я должен выбрать при разработке веб-сайта, обеспечивающего возможность чата в реальном времени. – Khafaga