如何管理XMPP连接

时间:2015-05-12 10:53:04

标签: xmpp xmppframework

我正在设计一个使用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());
    }

聊天和粘贴的一些处理。

    // Disconnect
    conn.disconnect();
    System.out.println("Connection Closed.");

我的要求:

  • 用户登录应用后,可能无法一次退出数月。正是Whatsapp的工作方式。

我的问题是:

  • 只要用户登录就保持连接打开是个好主意吗?
  • 如果没有,那么打开和关闭每条聊天消息的连接是个好主意吗?

需要建议:

  • 处理与XMPP服务器的连接的最有效方法是什么?

1 个答案:

答案 0 :(得分:2)

虽然问题不同,this SO我的回答可能有所帮助(也有评论),但简而言之:

打开和关闭每条消息的连接您应该做什么。

关于保持连接空闲(如WhatsApp),它是其中一个选项(查看Services),另一个是在应用程序启动时连接并保持连接,只要它和& #39; s,并在应用未运行时使用推送通知。

另一种选择是两者的结合(更接近WhatApp的作用)。

希望这有助于。