Strophe添加Roster联系人

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)向新联系人(“test”)发送类型为“subscribe”的出席信息数据包:
var subscribe = $pres({to: test@hostname.de/test, type: "subscribe"});
Chat.connection.send(subscribe);

那可以起作用,但不是每次都是这样的:
当我添加到我的花名册中的人(“test”)当前没有活动会话(未登录)时,发送方的订阅类型为“none”,并且“test”的订阅类型也为“none”。
所以:
接收者“Test”:订阅“无”
发送者“我”:订阅“无”
当我添加到我的花名册中的人有一个活动会话时,“to”和“from”的预期订阅类型被成功设置。
有任何想法吗?
1个回答

5

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

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

当用户稍后上线时,他们应该收到您的请求通知,并可以回复 <presence type="subscribed"/> 告知订阅。如果您在地址中加入了资源,那么可能会出现奇怪的路由规则,导致您的请求无法被存储。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接