重新连接Smack后无法接收消息

时间:2017-03-01 17:14:00

标签: android xmpp chat openfire smack

我正在开发一个使用服务器端作为OpenFire 3.9.3和客户端作为Smack 4.2的聊天应用程序。

我的问题:

  1. 如果用户关闭WIFI /移动数据,则会重新连接操作。没关系。但OpenFire会话在客户端重新连接期间显示为在线。这是正常行为吗?

  2. 当user1正在重新连接进程时,如果user2将消息发送给user1,并且在重新连接成功后这些消息没有传递给user1,是否有办法获取这些消息?

    重新连接处理时间的周期在OpenFire中被视为在线,因此这些消息不会存储在离线管理器中。

    请提供一些关于重新连接Smack后接收消息的想法。

1 个答案:

答案 0 :(得分:0)

这是我上面提到的关于如何在登录后设置监听器的评论:

public void setConnection() {
        if (connection != null) {
            // Add a packet listener to get messages sent to us
            PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
            connection.addPacketListener(new PacketListener() {
                @Override
                public void processPacket(Packet packet) {
                    Message m = (Message) packet;
                    if (m.getBody() != null) {
                        String fromName = StringUtils.parseBareAddress(m
                                .getFrom());

                        logs.append("\n");
                        logs.append(fromName + ":  " + m.getBody());
                        logs.append("\n");

                    }
                }
            }, filter);
        }

    }

如果你在登录监听器之后放入这样的方法,或者你登录,你将得到所有离线消息。