0

アリスが次のコードを使用して購読リクエストをボブに送信するとします。

public bool AddBuddy(string jid) {
    var roster = conn.Roster;

    // 2` param is nickname
    roster.CreateEntry(jid, null, null);
    roster.SetSubscriptionMode(Roster.SubscriptionMode.Manual);

    Presence subscribe = new Presence(Presence.Type.Subscribe);
    subscribe.To = jid;
    conn.SendPacket(subscribe);
}

Bob がログインすると、次のメソッドに追加するかどうかを知らせるポップアップが表示されます。

public void ProcessPacket (Packet p0)
{
        Presence presence = p0.JavaCast<Presence> ();
        var a = presence;
}

しかし、「後で追加」機能を実装する必要があります。メッセージをサーバーに保存する方法と、それらすべてを受信する方法がわかりません

4

2 に答える 2

1

サブスクリプションは必要なだけ遅延できます。サブスクリプション パケットをサーバーに保存する必要はありません。また、延期されたサブスクリプション リクエストをクエリするには、モードではないサブスクリプションの名簿をクエリするだけですboth

コードに関する 1 つのコメント:Roster.createEntry(String, String, String[]は自動的にプレゼンス パケットを送信します。再度送信する必要はありません。

于 2013-09-11T11:05:21.180 に答える