首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smack中的MultiUserChat邀请

Smack中的MultiUserChat邀请
EN

Stack Overflow用户
提问于 2011-12-06 03:31:31
回答 2查看 2.2K关注 0票数 4

我有以下代码来监听聊天室的邀请:

代码语言:javascript
复制
    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检测邀请请求?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-11 15:37:28

我可能来不及回答这个问题,但我想在这里分享我的解决方案,我也有同样的问题,

首先,这取决于你使用的smack版本(我推荐的是最新版本)

其次,发送MUC邀请的用户和接收邀请的用户应连接到同一服务器才能接收MUC邀请。

第三,始终启用smack调试器,它将提供有关传入和传出节的信息。

您需要考虑的第四个因素是登录后向XMPP服务器发送在线状态,如下所示。

代码语言:javascript
复制
       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服务器有关用户状态,然后将收到在线状态信息以及新的邀请,如果您已经在连接对象上启用了侦听器,这对我有效,希望它也适用于您,如果有任何信息错误,请纠正我。

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 23:58:28

您可能在pidgin中使用了错误的用户名。您必须使用名称后跟电子邮件地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8390743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档