如何管理XMPP连接



我正在使用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的作用)。

希望这会有所帮助。

最新更新