2

私はasmack(https://github.com/Flowdalic/asmackから入手)とgoogleサービスでいくつかのことを疲れさせています。サービス「gmail.com」を使用して複数のパケット(チャットメッセージの形式)をgtalkに送信しようとしましたが、メッセージを順不同で受信しています。

以下は、15個のパケット(「チャットメッセージ」)を連続して送信するためのコードです。

   String to = "testing@gmail.com"  // eg: gtalk ID


   for(int i =1;i<15;i++){
         Message msg = new Message(to, Message.Type.chat); 
         msg.setBody(i+"");
         connection.sendPacket(msg);
      }

これが、2回実行したときにgtalkに乗っているワットです。

順不同のチャットメッセージ 私は何か間違ったことをしています..誰かがここで私を助けることができますか?

前もって感謝します

4

2 に答える 2

4

RFC-6120から:

XMPPサーバーは、接続されたクライアントまたはリモートサーバーから特定の入力ストリームを介して受信するスタンザおよびその他のXML要素の順序どおりの処理を保証する必要があります。

(詳細については、仕様をお読みください)

ただし、それはサーバーまたはクライアントのいずれかが正しく実装されていることを意味するものではありません。サーバーが正しいという仮定から始めて、asmackでキューイングの問題を探します。

于 2012-05-23T01:07:43.280 に答える
3

メッセージをパケットとして送信するのではなく、Chatクラスを使用してチャットメッセージとして送信します。

Chat chat = connection.getChatManager().createChat(String userJID, MessageListener listener);
chat.sendMessage(string);

毎回新しいチャットを作成しないでください(おそらくそれはあなたのコードのせいです、あなたはすべての反復で新しいメッセージオブジェクトを作成し続けます)、あなたのforループの外に最初のステートメントを保ちます

于 2012-06-04T08:24:48.100 に答える