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

发布于 2024-11-01 19:03:50 字数 1105 浏览 1 评论 0原文

我正在尝试实现 XMPP 客户端。我正在使用 BOSH 连接管理器,可以运行 Strope.connect,但不能运行 Strope.Attach。我已经尝试增加 RID,但没有效果..请问有什么帮助吗?这里没有错误,但 Strope.Status.CONNECTED 永远不会通过附加方法到达,因此我无法发送 IQ 或 Presence。

这是我的代码 尝试 {

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

}

编辑

谢谢埃里克和查理。

所以我采用了最新的 Strope.js,现在 Attached 状态确实有效。 但连接立即断开。我什至无法获取名册。

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

有什么想法吗?

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

    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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

坠似风落 2024-11-08 19:03:50

更改该行:

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

...to...

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

Change the line:

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

...to...

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

时光暖心i 2024-11-08 19:03:50

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

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

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
}
无人问我粥可暖 2024-11-08 19:03:50

确保使用 new Number(cookieRid) 将 cookieRid 转换为数字。否则,当你对其进行 +1 时,你将得到“####1”。

您可以用 Javascript 自己测试一下:

var s = "123";

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

此外,正如 Eric 回答的那样,有一个“附加”状态,因此您需要处理该事件。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文