我正在使用Ejabberd作为XMPP服务器和SMACK 4.1 API设计聊天应用程序。以下是用于管理连接的代码段。
// Create a connection to the server.com server on 5222 port.
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword("user", "password")
.setServiceName("server.com")
.setHost("server.com_ip")
.setPort(5222)
.setSecurityMode(SecurityMode.disabled)
.build();
XMPPTCPConnection conn = new XMPPTCPConnection(config);
try {
conn.connect();
System.out.println("Connection established.");
conn.login();
System.out.println("Logged in.");
} catch (SmackException | IOException | XMPPException e) {
System.out.println("Connection not established: " + e.getMessage());
}
聊天和MUC的一些处理。
// Disconnect
conn.disconnect();
System.out.println("Connection Closed.");
我的要求:
- 一旦用户登录该应用程序,他们可能一次不会登录数月。正是WhatsApp的工作方式。
我的问题是:
- 只要用户登录使用? ,保持连接是一个好主意吗?
- 如果不是,那么打开和关闭每次聊天消息的连接是一个好主意吗?
需要建议:
- 处理与XMPP服务器连接的最有效方法是什么?
尽管问题是不同的,但我回答可能会有所帮助(评论),但简而言之:
打开和关闭每条消息的连接是不是您应该做什么。
关于保持连接空闲(例如WhatsApp),它是一种选项(查看服务),另一个是在应用程序出现并保持连接时连接,并且在启动时保持连接,并在此时使用推送通知应用程序未运行。
另一个选择是两者的组合(更接近WhatApp的作用)。
希望这会有所帮助。