【发布时间】:2023-12-27 03:17:01
【问题描述】:
我使用 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,rid 保存在 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() 后状态会改变?
【问题讨论】:
标签: javascript xmpp strophe