strophe.js,我使用attach()来恢复一个Bosh会话但是将'Status'附加到CONNFAIL并且已经被DISCONNECTED

时间:2016-06-29 19:12:37

标签: javascript xmpp strophe

我使用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()后,为什么状态会发生变化?

1 个答案:

答案 0 :(得分:0)

知道了。

connection.attach(JID,SID,parseInt函数(去掉,10)+ 1,onConnectAttach);

这是错的,因为我查看了一些关于"附加"的问题。功能,我发现有人说'摆脱'必须加一个。

但是,根据我的测试,我不需要这样做。只是:

connection.attach(jid,sid,rid,onConnectAttach);