Strophe.attach无法正常工作-我在本地使用openfire

| 我正在尝试实施XMPP客户端。我正在使用BOSH Connection Manager,可以运行Strophe.connect,但不能运行Strophe.Attach。我已经尝试增加RID,但是没有效果。这里没有错误,但是从未通过attach方法到达Strophe.Status.CONNECTED,因此我无法发送IQ或状态。 这是我的代码 尝试 {
    var cookieJid = $.cookie(\"jid\");
    var cookieSid = $.cookie(\"sid\");
    var cookieRid = $.cookie(\"rid\");

    var connt = new Strophe.Connection(\"http://localhost:7070/http-bind/\");

    connt.attach(cookieJid, cookieSid, cookieRid + 1, function(status)
    {

        if (status === Strophe.Status.CONNECTED)
        { 
            alert (\"hola connected\");
            $(\"#userName\").append(\"hola connected :  \" + connt.jid );

            var iq = $iq({type: \'get\'}).c(\'query\', {xmlns: \'jabber:iq:roster\'});
            connt.sendIQ(iq, handleRoster);
            connt.send($pres());
        }
    });

}
catch (e)
{
    $(\"#userName\").append(\"Pinky error is \" + e);

}
编辑 谢谢埃里克和查理。 因此,我使用了最新的Strophe.js,现在“附件”状态起作用了。 但是连接会立即断开。我什至无法拿到名册。 我们可以像使用connection.connect()一样使用Connection.attach()做所有事情,对不对? 有什么想法吗?     
已邀请:
更改行: 如果(状态=== Strophe.Status.CONNECTED) ...至... 如果(状态=== Strophe.Status.CONNECTED ||状态=== Strophe.Status.ATTACHED)     
您是否正在使用最新的Strophe库?在我使用的版本中,我看到状态可以是以下值:
Status: {
    ERROR: 0,
    CONNECTING: 1,
    CONNFAIL: 2,
    AUTHENTICATING: 3,
    AUTHFAIL: 4,
    CONNECTED: 5,
    DISCONNECTED: 6,
    DISCONNECTING: 7,
    ATTACHED: 8
}
    
确保使用新的Number(cookieRid)将cookieRid转换为Number。否则,当您对其执行+1时,将获得\“ #### 1 \”。 您可以使用Javascript自己测试一下:
var s = \"123\";

alert(s+1); // \"1231\" and not \"124\"
同样,正如Eric回答的那样,状态为ATTACHED,因此您需要处理该事件。     

要回复问题请先登录注册