【问题标题】:Android - XMPP over websocketsAndroid - 基于 websockets 的 XMPP
【发布时间】:2021-10-22 14:16:34
【问题描述】:

我正在尝试使用 XMPP over WebSockets 在我的 Android 应用中实现聊天功能。

我能够找到一个库 (org.igniterealtime.smack),但连接是通过 TCP 而不是通过 WebSockets 建立的,这是我不想要的。

是否有人必须实现相同的功能并且可以为我指明正确的方向?

【问题讨论】:

    标签: android websocket xmpp


    【解决方案1】:

    对 Smack 的 Websocket 支持跟踪为 SMACK-835。它目前位于 Smack 的主分支中,并计划成为 Smack 4.5 版本。

    您现在可以通过使用 Smack 预发布版本或来自 https://www.igniterealtime.org/archiva/repository/maven/ 的夜间工件来使用它

    【讨论】:

      【解决方案2】:

      不确定它是否可以并且不违反 TOS 之类的,但第一句话暗示了 XMPP + WebSocket 的一般指导,而不是严格要求 Smack 答案所以 - 你可以使用已经支持 WebSocket 的 JaXMPP 库 (https://github.com/tigase/jaxmpp)并且与Android兼容(StorkIM,https://github.com/tigase/stork是基于它的)。

      建立 WebSocket 连接非常容易(即使是加密的):

      
      JID user = JID.jidInstance("user@example.com/resource");
      String password = "password";
      
      Jaxmpp contact = new Jaxmpp();
      contact.getModulesManager().register(new MessageModule());
      
      contact.getConnectionConfiguration().setConnectionType(ConnectionConfiguration.ConnectionType.websocket);
      contact.getConnectionConfiguration().setBoshService("wss://xmpp.example.com:5291");
      
      contact.getConnectionConfiguration().setUserJID(user.getBareJid());
      contact.getConnectionConfiguration().setUserPassword(password);
      
      try {
          contact.login(true);
          if (contact.isConnected()) {
              contact.disconnect();
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
      

      (免责声明:我来自 Tigase 团队,该团队创建了 JaXMPP 和 StorkIM)

      【讨论】:

        猜你喜欢
        • 2014-10-12
        • 2016-09-11
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多