如何管理 XMPP 连接

How to manage XMPP connection

我正在设计一个聊天应用程序,使用 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),这是一种选择(查看 Services),另一种方法是在您的应用程序启动时连接并在它启动时保持连接,并在应用不是 运行.

时使用推送通知

另一种选择是两者结合(更接近于 WhatApp 的功能)。

希望对您有所帮助。