【问题标题】:Does Google Talk support XMPP Multi-User Chat?Google Talk 是否支持 XMPP 多用户聊天?
【发布时间】:2013-01-31 22:59:26
【问题描述】:

我正在使用 Smack 在 Java/Spark 中开发一个内部仪表板,它将在 LDAP 用户组之间启动 Google Talk 会议。当我跑步时

MultiUserChat.isServiceEnabled(connection, "user@mydomain.com")

它返回假。我知道通过 GMail 客户端,可以开始群聊。这是否会因为我的 Google Apps 域中的某些内容而返回 false,或者 Google 是否使用其他方式在 Google Talk 中进行群聊?

【问题讨论】:

    标签: java xmpp google-apps smack google-talk


    【解决方案1】:

    不,截至今天,没有 Google Talk 客户端支持 XEP-45 多用户聊天 (MUC),Google Talk 也没有宣布 XMPP MUC 组件。1

    来自 Google 的所有 Google Talk 客户端都不支持 MUC,您可以通过 MultiUserChat.isServiceEnabled() 进行检查。但是,如果用户通过 Google Talk 使用第三方 XMPP 客户端(例如 Gajim),那么他可以像任何其他 XMPP 用户一样加入 MUC 房间。

    在 Google 产品论坛上也可以查看此问题:http://productforums.google.com/forum/#!topic/chat/HLyMGBxJM7Q

    1但是有一个。 See this answer.

    【讨论】:

    • 感谢您的回答。谷歌不支持完整的 XMPP 规范真的很糟糕:(
    • 嗯,这是一个可选的 XMPP 扩展。 Google Talk 支持 XMPP-CORE 和 -IM。
    【解决方案2】:

    事实证明,GTalk 实际上确实支持 MUC。使用 Smack 和 Java,就像下面的代码一样简单:

     UUID uid = UUID.randomUUID();
     String chatRoomName = String.format("private-chat-%1s@%2s", uid, "groupchat.google.com");
     MultiUserChat muc = new MultiUserChat(connection, chatRoomName);
     muc.join("My username");
    

    从那里,只需添加类似用户的问题

     muc.invite("someguy@somedomain.tld", "Some reason");
    

    【讨论】:

    • 哦,有趣。但是由于谷歌没有宣布 MUC 组件我会依赖它。它可能会在未来的某个时候被删除。
    • 是的,我实际上希望他们删除它以支持传统的 XEP-0045 多用户聊天。不过就目前而言,这是一个可行的解决方案。
    【解决方案3】:

    我找到了这个:Google Talk multi-user chat specifications

    它显示了 Talk 和 XMPP 规范之间的一些差异。希望在 talk.google.com 服务上创建或加入私人 MUC 房间的第三方客户需要遵循这些规范。

    1. 房间名称必须遵循 private-chat-GUID@groupchat.google.com 的特定格式。

    2. 从客户端到talk.google.com 的状态广播必须包含实体能力元素。

    3. 如果用户希望更改他们在房间内的昵称,客户端必须将旧昵称设置为不可用,然后再发送带有新昵称的在线状态节。

    Sure Talk 支持 XMPP。

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多