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) タイプ「subscribe」のプレゼンス スタンザを新しい連絡先 (「test」) に送信します。

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

それはうまくいきますが、毎回ではありません:

名簿に追加する人 (「テスト」)に現在アクティブなセッションがない (ログインしていない)場合、送信者のサブスクリプション タイプは「なし」であり、「テスト'。

そう:

レシーバー「テスト」: サブスクリプション「なし」

送信者「私」: サブスクリプション「なし」

名簿に追加しようとしている人がアクティブなセッションを持っている場合、予想されるサブスクリプション タイプ「to」および「from」が正常に設定されます。

何か案が ?

4

1 に答える 1

5

サブスクリプション リクエストで to アドレスのリソースを使用しないでください。

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

ユーザーが後でオンラインになると、要求が通知され、<presence type="subscribed"/>スタンザで応答できるようになります。to アドレスにリソースを配置すると、リクエストが保存されない奇妙なルーティング ルールが適用される可能性があります。

于 2013-08-06T20:50:06.080 に答える