我使用strophe.js构建一个简单的IM(web)。
我有2个pages:index.html(用于登录)和myChat.html(主要聊天视图)。
当我通过jid和index.html密码登录到openfire服务器时
connection = new Strophe.Connection(BOSH_SERVICE);
connection.connect($("#inputName").val()+"@openfireserver", $("#inputPassword").val(), onConnect);
然后我保存jid,sid,清除COOKIE中的回调'onConnect',然后转到myChat.html
if (status == Strophe.Status.CONNECTED) {
console.log("success");
connected = true;
$.cookie('jid', connection.jid);
$.cookie('sid', connection._proto.sid);
$.cookie('rid', connection._proto.rid);
location.href='myChat.html';
}
在myChat.html中,我使用connection.attach()恢复BOSH会话。
var jid=$.cookie('jid');
var sid=$.cookie('sid');
var rid=$.cookie('rid');
connection = new Strophe.Connection(BOSH_SERVICE);
connection.attach(jid,sid,parseInt(rid,10)+1,onConnectAttach);
首先,在回调'onConnectAttach‘中,status==Strophe.Status.ATTACHED,但等待1-3分钟,状态将变成Strophe.Status.CONNFAIL和Strophe.Status.CONNECTED!
如果我使用connection.connect()重新连接服务器,它将始终保持会话。
所以我不明白我在哪里犯的错?为什么在我使用attach()之后状态会改变呢?
发布于 2016-06-29 19:25:15
明白了。
connection.attach(jid,sid,parseInt(rid,10)+1,onConnectAttach);
这是错误的,因为我看了一些关于“附加”函数的问题,我发现有人说‘清除’必须加一个。
但是,根据我的测试,我不需要做that.just:
connection.attach(jid,sid,rid,onConnectAttach);
https://stackoverflow.com/questions/38108221
复制相似问题