【发布时间】:2012-02-15 18:51:41
【问题描述】:
我是堆栈上的新用户,但我在适用于 android 的 aSmack 库 3.2.1 中的 MultiUserChat 存在问题。我正在使用“gtalk.google.com”服务器。这是一个简单的例子,我只是房间里的一个人:
String room="myConference@conference.jabber.org";
MultiUserChat muc = new MultiUserChat(connection,room);
muc.join(userNameInRoom);
muc.addMessageListener(new PacketListener()
{
@Override
public void processPacket(Packet packet)
{
...
}
});
之后:
muc.sendMessage("Text message");
在日志中:
DEBUG/SMACK(281): 06:46:29 PM SENT (1140866576): <message id="gsMe7-18"
to="myConference@conference.jabber.org" type="groupchat"><body>Text message
</body></message>
DEBUG/SMACK(281): 06:46:29 PM RCV (1140866576): <message
from="myConference@conference.jabber.org/userNameInRoom" to="userName"
type="groupchat"><body>Text message</body></message>
结果:“短信”是正确的,但是:
我再次收到“短信”的存在:
DEBUG/SMACK(281): 06:54:12 PM RCV (1140866576): <presence
from="myConference@conference.jabber.org/userNameInRoom" to="userName"><x xmlns=
"vcard-temp:x:update"><photo/></x><x xmlns="http://jabber.org/protocol/muc#user">
<item affiliation="owner" role="moderator"/><status code="110"/></x></presence>
DEBUG/SMACK(281): 06:54:12 PM RCV (1140866576): <message
from="myConference@conference.jabber.org/userNameInRoom" to="userName"
type="groupchat"><body>Text message</body><delay stamp="2012-02-15T17:46:31Z"
from="myConference@conference.jabber.org" xmlns="urn:xmpp:delay"/><x
stamp="20120215T17:46:31" from="myConference@conference.jabber.org"
xmlns="jabber:x:delay"/></message>
每当服务器向我发送存在信息时,我都会一次又一次地收到它。它以大约 5 分钟的间隔无限继续。是的,在 30 分钟内,我收到了大约 6 条“短信”消息。如果我发送超过 1 条消息,所有这些消息都会在状态发送给我时毫无例外地收到。
我的 MultiUserChat 有什么问题,这里有什么延迟交付?
感谢关注!
【问题讨论】:
-
有趣,我能补充的是status code 101 的意思是“MUC/用户组合的从属关系更改”
-
流,谢谢评论。但是状态码是 110 而不是 101。状态码 110 表示在场发送,是真的。
-
IIRC,这是 google talk 中的一些奇怪行为,他们会每隔一段时间重新广播你的存在,这会导致房间很奇怪。