得到SID& RID使用strophe.js

时间:2014-08-11 10:13:12

标签: javascript xmpp strophe

我如何获得SID&使用strophejs连接到XMPP服务器时的RID?我使用Ejabbered作为XMPP服务器。

这是我的代码

        $(document).bind('connect', function (ev, data) {

        var conn = new Strophe.Connection('http://localhost:5280/http-bind');

        conn.connect(data.jid, data.password, function (status) {
            if (status === Strophe.Status.CONNECTED) {

                $(document).trigger('connected');
            } else if (status === Strophe.Status.DISCONNECTED) {
                $(document).trigger('disconnected');
            }
        });

        Gab.connection = conn;
    });

$(document).bind('connected', function () {
    ---------------------------------
    ---------------------------------

    console.log(Gab.connection.jid); // Got jid
    console.log(Gab.connection.rid); // Value is undefined
    console.log(Gab.connection.sid); // value is undefined
});

我试过上面的代码。但是未定义为价值。

我查过这个问题, XMPP: retrieving BOSH Session ID and RID

但在那里的评论中,'undefined'就是结果!

1 个答案:

答案 0 :(得分:5)

通过向connection.xmlOutput添加一个函数,我从strophe连接中获取RID和SID。这使得能够在发送之前查看传出节。这是一个例子:

      connection.xmlOutput = function (e) {
        if (IS_CONNECTED) {

            LAST_USED_RID = $(e).attr('rid');
            LAST_USED_SID = $(e).attr('sid');
            log(' XMLOUTPUT INFO - OUTGOING RID=' + LAST_USED_RID + ' [SID=' + LAST_USED_SID + ']');
            //log(' XMLOUTPUT INFO - OUTGOING XML = \n'+e.outerHTML);
            //set some variables to keep track of our rid and sid
        }
    };

您也可以从连接._proto访问RID和SID属性,例如:

connection._proto.rid

这可能是相关的:https://github.com/jcbrand/converse.js/issues/180