我使用 MongooseIM 作为我的 XMPP 服务器,该服务器通常使用 TCP 作为传输。该服务器与我的 iOS 客户端配合良好。但是当我想在 Web 应用程序中创建相同的服务时,我发现它不适用于任何类型的 javascript XMPP 框架。
因为对于浏览器,我们不能使用 TCP 作为传输。相反,替代方案是 WebSocket 和 BOSH。当我将 WebSocket 与 MongooseIM 结合使用时,它显示 hand shake failed
。使用 BOSH 时,它显示 403 错误
。那么 MongooseIM 真的可以与 WebSocket 或 BOSH 配合使用吗?
而且,使用 TCP 作为传输方式时,连接 URL 是“example.org”,为什么 BOSH 的连接 URL 是“example.org/http-bind”?为什么两种运输之间存在差异?
最佳答案
纯XMPP TCP连接,BOSH和Websockets是完全不同的协议(protocol)。 BOSH 和 Websockets 都使用单独的后缀(http-bind
、ws-xmpp
)来区分端点(如果它们在同一端口上运行)。它使服务器无需猜测客户端实际上将使用什么协议(protocol),并提供了很好的分离。
您到底使用什么 URL 来连接 BOSH 和 Websockets?在前一种情况下,它应该类似于 http://localhost:5280/http-bind
,而在后一种情况下,它应该类似于 ws://localhost:5280/ws-xmpp
。
您尝试过哪些 JS 客户端?
关于javascript - XMPP 服务器 MongooseIM 是否可以与 BOSH 或 WebSocket 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28462816/