我使用strophe.js构建一个简单的IM(web)。
我有2个页面:index.html(用于登录)和myChat.html(主要聊天视图)。
当我通过index.html中的jid和密码登录openfire服务器时
connection = new Strophe.Connection(BOSH_SERVICE);
connection.connect($("#inputName").val()+"@openfireserver", $("#inputPassword").val(), onConnect);
然后我保存jid,sid,在回调'onConnect'中删除COOKIE,然后转到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'中,状态== Strophe.Status.ATTACHED, 但等待1-3分钟,状态将变为Strophe.Status.CONNFAIL和Strophe.Status.CONNECTED !
如果我使用connection.connect()重新连接服务器,它将一直保持会话。
所以我无法理解我犯错误的地方?使用attach()后,为什么状态会发生变化?
答案 0 :(得分:0)
知道了。
connection.attach(JID,SID,parseInt函数(去掉,10)+ 1,onConnectAttach);
这是错的,因为我查看了一些关于"附加"的问题。功能,我发现有人说'摆脱'必须加一个。
但是,根据我的测试,我不需要这样做。只是:
connection.attach(jid,sid,rid,onConnectAttach);