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-bind
、ws-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 负载测试
MongooseIM 可以在 PostgreSQL 后端处理多少用户?