我正在客户端使用XMPP而不是BOSH和Strophe实现实时通知系统,但我遇到了一些问题。当我登录我的网站时,我在后端建立了一个BOSH连接,并将JID,SID和RID保存为cookie。重新加载页面时,我从cookie中获取数据并使用Strophe的附加功能附加到该会话。我得到一个回调状态,说我已被附加。
我面临的第一个问题是请求每隔一秒左右发送一次。 这些是请求标头:
请求URL:http:// localhost:7070 / http-bind /
请求方法:POST
状态代码:200 OK请求标题
接受:* / *
接收字符集:UTF-8,*; Q = 0.5
接受编码:gzip,紧缩,SDCH
接受语言:SV-SE,SV; Q = 0.8,EN-US; Q = 0.6,连接; Q = 0.4
缓存控制:最大年龄= 0
连接:保持活跃
内容长度:77
饼干: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,与Gecko一样)Chrome / 13.0.782.107 Safari / 535.1 content-type:application / x-www-form-urlencoded表单数据
<尸体摆脱:'3007'xmlns回复标题
内容长度:57
内容类型:文本/ XML;字符集= UTF-8
服务器:码头(7.0.2-SNAPSHOT)
我看不到任何回复内容,所以我不确定是什么导致它。发送的表单数据看起来像无效和不完整的XML,这是导致它的原因还是Chrome在调试器中如何格式化它?
我面临的另一个问题是我重新加载页面。我已经将一个卸载事件绑定到window对象,在该对象中我将RID增加1并将其保存到cookie中。但是,当重新加载页面时,它表示我已连接到BOSH会话,但后来收到以下错误消息:
POST http://localhost:7070/http-bind/ 404 (Not Found) (localhost)
Uncaught Error: 16, ioError, An error occured preventing completion of the request. (flensed.js)
下一个请求将抛出404(无效SID。)而不是404(未找到)并且每70秒左右重复一次。
是否有其他人遇到此问题并知道如何解决?我很沮丧!
提前致谢,
皮尔
答案 0 :(得分:1)
虽然您已经放弃了实现,但您提到的第一个问题仍然是客户端服务器在Openfire连接中执行的连续ping操作,以便服务器知道客户端已启动并正在运行。第二个错误,不完全确定,但可能是因为您正在中断它们之间的通信而不是优雅地终止它。这可能导致strophe客户端再次遇到绑定到端口的一些问题。由于上面提到的ping机制,您也会反复面对问题。在触发window.onbeforeunload事件后,您可以尝试调用connection.disconnect方法。这将确保优雅的终止,从而确保正确的重新连接。