0

我使用 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”,为什么它会是 BOSH 的“example.org/http-bind”?为什么2运输有区别?

4

1 回答 1

3

纯 XMPP TCP 连接、BOSH 和 Websockets 是完全不同的协议。BOSH 和 Websocket 都使用单独的后缀 ( http-bind, ws-xmpp) 来区分端点(如果它们在同一端口上运行)。它使服务器不必猜测客户端实际上将使用什么协议,并提供了很好的分离。

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

您尝试过哪些 JS 客户端?

于 2015-02-11T21:10:41.307 回答