【问题标题】:Having trouble attaching to a BOSH session using Strophe使用 Strophe 附加到 BOSH 会话时遇到问题
【发布时间】:2026-01-21 15:05:03
【问题描述】:

我正在客户端使用 XMPP over BOSH 和 Strophe 实现实时通知系统,但我遇到了一些问题。当我登录我的网站时,我在后端建立了一个 BOSH 连接,并将 JID、SID 和 RID 保存为 cookie。当页面重新加载时,我从 cookie 中获取数据并使用 Strophe 的附加功能附加到该会话。我收到一个回叫状态,表明我已被附加。

我面临的第一个问题是每秒钟左右就会发送一次请求。 这些是请求标头:

请求地址:http://localhost:7070/http-bind/
请求方法:POST
状态码:200 OK

请求标头
接受:*/*
接受字符集:UTF-8,*;q=0.5
接受编码:gzip、deflate、sdch
接受语言:sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4
缓存控制:max-age=0
连接:保持活动
内容长度:77
Cookie:JSESSIONID=ibxwvm3ophp8; jiveforums.admin.logviewer="debug.size=0&info.size=0&warn.size=0&error.size=0"
主机:本地主机:7070
来源:http://***
推荐人:http://***/flXHR/flXHR.swf
用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1 内容类型:应用程序/x-www-form-urlencoded

表单数据

响应标头
内容长度:57
内容类型:文本/xml;字符集=UTF-8
服务器:码头(7.0.2-SNAPSHOT)

我看不到任何响应内容,所以我不确定是什么原因造成的。发送的表单数据看起来像无效和不完整的 XML,这是导致它的原因还是 Chrome 在调试器中将其格式化的方式?

我面临的另一个问题是重新加载页面时。我已将卸载事件绑定到窗口对象,在该对象中我将 RID 加一并将其保存到 cookie。但是,当页面重新加载时,它说我已附加到 BOSH 会话,但随后我收到以下错误消息:

POST @987654321@ 404 (Not Found) (localhost)

Uncaught Error: 16, ioError, An error occured preventing completion of the request. (flensed.js)

下一个请求将抛出 404(无效 SID。)而不是 404(未找到),并且每 70 多秒左右重复一次。

有其他人遇到过这个问题并知道如何解决吗?我很沮丧!

提前致谢,
皮埃尔

【问题讨论】:

  • 抱歉,我不记得了,亨特。可能不是。我们后来放弃了实施。

标签: javascript xmpp openfire strophe


【解决方案1】:

尽管您已经放弃了实现,但您提到的第一个问题仍然是客户端服务器在 Openfire 连接中执行的连续 ping,以便服务器知道客户端已启动并正在运行。第二个错误,虽然不太确定,但很可能出现,因为您中断了中间的通信并且没有优雅地终止它。这可能会导致 strophe 客户端在再次绑定到端口时遇到一些问题。此外,由于上述 ping 机制,您会反复遇到该问题。您可以尝试在 window.onbeforeunload 事件触发后调用 connection.disconnect 方法。这将确保正常终止并因此正确重新连接。

【讨论】:

    最近更新 更多