strophe.js,我使用 attach() 来恢复 Bosh 会话,但将“状态”附加到 CONFAIL 和 DISCONNECTED
Posted
技术标签:
【中文标题】strophe.js,我使用 attach() 来恢复 Bosh 会话,但将“状态”附加到 CONFAIL 和 DISCONNECTED【英文标题】:strophe.js, I use attach() to restore a Bosh session but get 'Status' ATTACHED to CONNFAIL and to DISCONNECTED 【发布时间】:2016-06-29 19:12:36 【问题描述】:我使用 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() 后状态会改变?
【问题讨论】:
【参考方案1】:知道了。
connection.attach(jid,sid,parseInt(rid,10)+1,onConnectAttach);
这是错误的,因为我浏览了一些关于“附加”功能的问题,我发现有人说“摆脱”必须加一个。
但是,根据我的测试,我不需要这样做。只是:
connection.attach(jid,sid,rid,onConnectAttach);
【讨论】:
以上是关于strophe.js,我使用 attach() 来恢复 Bosh 会话,但将“状态”附加到 CONFAIL 和 DISCONNECTED的主要内容,如果未能解决你的问题,请参考以下文章
将 Strophe.js 与 React Native 一起使用
strophe.min.js 和 strophe.js 的区别?