使用asmack发送多个聊天消息到gtalk;不按顺序

时间:2012-05-21 16:10:22

标签: android xmpp smack google-talk asmack

我用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的问题。

out of order chat messages http://s15.postimage.org/inpgzbyiz/gtalk_messages.png 我做错了什么......任何人都可以帮助我吗?

提前致谢

2 个答案:

答案 0 :(得分:4)

来自RFC-6120

  

XMPP服务器必须确保节的顺序处理   它从一个给定的输入流接收的其他XML元素   连接客户端或远程服务器。

(更详细地阅读规范)

但是,这并不意味着您的服务器或客户端都已正确实施。首先假设服务器是正确的,并在asmack中查找排队问题。

答案 1 :(得分:3)

而不是将您的msgs作为数据包发送,使用Chat类将其作为聊天消息发送:

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

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