我正试图推动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()完成所有事情,对吗?
有什么想法吗?
答案 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,因此您需要处理该事件。