开发者

Strophe.attach not working - I am using openfire locally

I am trying to implment the XMPP Client. I am using BOSH Connection manager and can run the Strophe.connect but not Strophe.Attach. I have tried incrementing the RID, but no effect.. Any help please ? There is no error here, but the Strophe.Status.CONNECTED is never reached via the attach method and so I cannot send IQ or Presence.

Here is my code try {

    var cookieJid = $.cookie("jid");
    var cookieSid = $.cookie("sid");
    var cookieRid = $.cookie("rid");开发者_如何学Go

    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);

}

Edit

Thanks Eric and Charlie.

So I took the latest Strophe.js and now Attached status does work. But the connection disconnects instantaneously. I am not even able to fetch the Roster.

We can possibly do every thing with Connection.attach() as we would with connection.connect(), right?

Any thoughts?


Change the line:

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

...to...

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


Are you using the latest Strophe library? In the version I'm using, I see that the status can be these values:

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


Make sure you convert your cookieRid to a Number by using new Number(cookieRid). Otherwise, when you do +1 on it, you will get "####1".

You can test this out for yourself in Javascript:

var s = "123";

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

Also, as Eric answered, there is a status ATTACHED so you need to handle that event.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜