2

我对 asmack(从https://github.com/Flowdalic/asmack获得)和谷歌服务感到厌烦。我尝试使用服务“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);
      }

这是我在运行两次时进入 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);

不要每次都创建一个新的聊天(也许这是你的代码的错误,你在每次迭代中继续创建一个新的 Message 对象),将第一个语句保留在你的 for 循环之外

于 2012-06-04T08:24:48.100 回答