3

我目前正在开发“添加名册联系人”功能。

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) 将“订阅”类型的出席信息节发送给新联系人(“测试”):

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

这有效,但并非每次都有效:

当我添加到我的花名册('test')的人当前没有活动会话(未登录)时,我会为发件人获得订阅类型为'none',以及订阅类型为'none'测试'。

所以:

接收方“测试”:订阅“无”

发件人“我”:订阅“无”

当我添加到我的花名册的人有一个活动会话时,预期的订阅类型“to”和“from”已成功设置。

任何想法 ?

4

1 回答 1

5

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

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

当用户稍后上线时,他们应该会收到您的请求的通知,并且可以回复一个<presence type="subscribed"/>节。如果您将资源放在目标地址上,那么奇怪的路由规则可能会发挥作用,不会导致您的请求被存储。

于 2013-08-06T20:50:06.080 回答