我正在开发一个使用服务器端作为OpenFire 3.9.3和客户端作为Smack 4.2的聊天应用程序。
我的问题:
如果用户关闭WIFI /移动数据,则会重新连接操作。没关系。但OpenFire会话在客户端重新连接期间显示为在线。这是正常行为吗?
当user1正在重新连接进程时,如果user2将消息发送给user1,并且在重新连接成功后这些消息没有传递给user1,是否有办法获取这些消息?
重新连接处理时间的周期在OpenFire中被视为在线,因此这些消息不会存储在离线管理器中。
请提供一些关于重新连接Smack后接收消息的想法。
答案 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);
}
}
如果你在登录监听器之后放入这样的方法,或者你登录,你将得到所有离线消息。