Работает ли 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 вы пробовали?