我有以下代码来监听聊天室的邀请:
Connection.DEBUG_ENABLED = true;
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.connect();
connection.login("username", "password");
MultiUserChat.addInvitationListener(connection, new InvitationListener() {
@Override
public void invitationReceived(Connection arg0, String arg1,
String arg2, String arg3, String arg4, Message arg5) {
System.out.println("Invitation Received!");
}
});
System.out.println("Connected, waiting for invitation");
while(true) {
Thread.yield();
}
}然后我用另一个账号登录,创建一个聊天室,并邀请上面的用户。未调用invitationReceived方法。当我登录时,smack调试器会收到状态更新,但不会收到其他数据包。但是,如果我使用pidgin登录到上面的用户,我确实会收到邀请。如何让smack检测邀请请求?
发布于 2014-10-11 15:37:28
我可能来不及回答这个问题,但我想在这里分享我的解决方案,我也有同样的问题,
首先,这取决于你使用的smack版本(我推荐的是最新版本)
其次,发送MUC邀请的用户和接收邀请的用户应连接到同一服务器才能接收MUC邀请。
第三,始终启用smack调试器,它将提供有关传入和传出节的信息。
您需要考虑的第四个因素是登录后向XMPP服务器发送在线状态,如下所示。
connection.setStatus(true,"ONLINE");
public void setStatus(boolean available, String status) throws XMPPException {
Presence.Type type = available? Type.available: Type.unavailable;
Presence presence = new Presence(type);
presence.setStatus(status);
connection.sendPacket(presence);
} 发送在线状态通知xmpp服务器有关用户状态,然后将收到在线状态信息以及新的邀请,如果您已经在连接对象上启用了侦听器,这对我有效,希望它也适用于您,如果有任何信息错误,请纠正我。
发布于 2012-01-11 23:58:28
您可能在pidgin中使用了错误的用户名。您必须使用名称后跟电子邮件地址。
https://stackoverflow.com/questions/8390743
复制相似问题