Strophe添加名册联系

时间:2013-08-04 14:35:51

标签: javascript xmpp openfire strophe

我目前正致力于“添加名册联系”功能。

1)我将新联系人添加到我的名册中:

var iq = $iq({type: "set"}).c("query", {xmlns: "jabber:iq:roster"}).c("item"  {jid:"test@hostname.de/test",name:"test"});
Chat.connection.sendIQ(iq);

联系人已成功添加到我的名册中。

2)向新联系人发送“订阅”类型的状态节('test'):

var subscribe = $pres({to: test@hostname.de/test, type: "subscribe"});
Chat.connection.send(subscribe);

这有效,但不是每次都有效:

当我加入我的名单的人('测试')时 目前没有活动会话(未登录),我得到了 发件人的订阅类型为“无”,也是 'test'的订阅类型为'none'。

所以:

接收者'测试':订阅'无'

发件人'我':订阅'无'

当我加入我的名单的人有一个活跃的 会话,成功设置了预期的订阅类型'到'和'从'。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

请勿在订阅请求中使用to地址上的资源:

var subscribe = $pres({to: "test@hostname.de", type: "subscribe"});
Chat.connection.send(subscribe);

当用户稍后联机时,他们会收到您的请求通知,并可以使用<presence type="subscribed"/>节回复。如果您将资源放在地址上,则可能会出现奇怪的路由规则,这些规则不会导致您的请求被存储。