我用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 我做错了什么......任何人都可以帮助我吗?
提前致谢
答案 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循环之外