Работает ли XMPP-сервер MongooseIM с BOSH или WebSocket?

Я использую MongooseIM в качестве сервера XMPP, и этот сервер обычно использует TCP в качестве транспорта. Этот сервер отлично работает с моим клиентом iOS. Но когда я захотел создать такой же сервис в веб-приложении, я обнаружил, что он не работает ни с каким javascript XMPP-фреймворком.

Потому что с браузером мы не можем использовать TCP в качестве транспорта. Вместо этого альтернативы являются WebSocket и BOSH. Когда я использую WebSocket с MongooseIM, он показывает hand shake failed, В то время как с BOSH, это показывает 403 error, Так действительно ли MongooseIM работает с WebSocket или BOSH?

А также, с TCP в качестве моего транспорта, URL-адрес соединения - "example.org", почему это будет "example.org/http-bind" с BOSH? Почему есть разница между 2 транспорта?

1 ответ

Чистое XMPP TCP соединение, BOSH и Websockets - это совершенно разные протоколы. И BOSH, и Websockets используют отдельный суффикс (http-bind, ws-xmpp) различать конечные точки, если они работают на одном и том же порту. Это избавляет сервер от некоторых предположений о том, какой протокол на самом деле будет использовать клиент, и обеспечивает хорошее разделение.

Какой URL вы точно используете для соединения BOSH и Websockets? В первом случае это должно быть что-то вроде http://localhost:5280/http-bind и в последнем ws://localhost:5280/ws-xmpp,

Какие клиенты JS вы пробовали?

Другие вопросы по тегам