XMPP 服务器 MongooseIM 是不是可以与 BOSH 或 WebSocket 一起使用?

Posted

技术标签:

【中文标题】XMPP 服务器 MongooseIM 是不是可以与 BOSH 或 WebSocket 一起使用?【英文标题】:Does XMPP server MongooseIM work with BOSH or WebSocket?XMPP 服务器 MongooseIM 是否可以与 BOSH 或 WebSocket 一起使用? 【发布时间】:2015-02-11 19:26:03 【问题描述】:

我使用 MongooseIM 作为我的 XMPP 服务器,并且该服务器通常使用 TCP 作为传输。该服务器可以与我的 ios 客户端正常工作。但是当我想在 web 应用程序中创建相同的服务时,我发现它不适用于任何类型的 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 和 Websocket 都使用单独的后缀(http-bindws-xmpp)来区分运行在同一端口上的端点。它使服务器不必猜测客户端实际上将使用什么协议,并提供了很好的分离。

对于 BOSH 和 Websockets 连接,您究竟使用什么 URL?在前一种情况下,它应该类似于http://localhost:5280/http-bind,在后一种情况下应该是ws://localhost:5280/ws-xmpp

你尝试过哪些 JS 客户端?

【讨论】:

我使用 Strophe.js 和 MongooseIM。我知道还有一些其他服务器支持 BOSH 和 WebSocket,但我想知道 MongooseIM 是否支持它们。因为我不想修改我的后端架构。 是的,MongooseIM 确实支持 WebSockets 和 BOSH。我们(免责声明:我在 MongooseIM 上工作)有使用 Strophe.js 和 BOSH 的经验,所以这绝对是可能的,并且不需要对客户端库或服务器进行任何更改。我不知道 WebSocket 传输是否相同,但我没有理由假设它不起作用。 我们需要更多信息 Phineas。第一个是您为这些连接使用的 URL。如果您可以分享您的 Strophe.js 配置,那就更好了。

以上是关于XMPP 服务器 MongooseIM 是不是可以与 BOSH 或 WebSocket 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

MongooseIM (websockets) 的 Tsung 负载测试

如何在 Nativescript 中实现 XMPP 通信?

XMPP 上的未读消息计数

MongooseIM 可以在 PostgreSQL 后端处理多少用户?

MUC 消息的 MongooseIM 推送通知(不是 MUC 灯)

如何在 mongooseim 服务器中从 sql 注册用户名密码字段