Strophe.attach不工作 - 我在本地使用openfire

时间:2011-04-18 00:21:11

标签: openfire strophe

我正试图推动XMPP客户端。我正在使用BOSH连接管理器,可以运行Strophe.connect但不能运行Strophe.Attach。我试过递增RID,但没有效果..请帮忙吗?这里没有错误,但Strophe.Status.CONNECTED永远不会通过attach方法到达,因此我无法发送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);

}

修改

感谢Eric和Charlie。

所以我采用了最新的Strophe.js,现在附加状态确实有效。 但是连接瞬间断开连接。我甚至无法取得名册。

我们可以像使用connection.connect()那样使用Connection.attach()完成所有事情,对吗?

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

更改行:

if(status === Strophe.Status.CONNECTED)

...到...

if(status === Strophe.Status.CONNECTED || status === Strophe.Status.ATTACHED)

答案 1 :(得分:1)

您使用的是最新的Strophe库吗?在我正在使用的版本中,我看到状态可以是这些值:

Status: {
    ERROR: 0,
    CONNECTING: 1,
    CONNFAIL: 2,
    AUTHENTICATING: 3,
    AUTHFAIL: 4,
    CONNECTED: 5,
    DISCONNECTED: 6,
    DISCONNECTING: 7,
    ATTACHED: 8
}

答案 2 :(得分:1)

确保使用新号码(cookieRid)将cookieRid转换为数字。否则,当你对它做+1时,你会得到“#### 1”。

您可以在Javascript中自行测试:

var s = "123";

alert(s+1); // "1231" and not "124"

此外,正如Eric回答的那样,状态为ATTACHED,因此您需要处理该事件。