谷歌聊天支持XMPP多用户聊天吗?

7

我正在使用Smack来开发一个Java/Spark内部控制面板,该面板可以在LDAP用户组之间启动Google Talk会议。当我运行时

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

返回false。我知道通过GMail客户端,可以开始一个群组对话。这可能是因为我的Google Apps域中的某些原因导致了返回false,还是谷歌在Google Talk中使用其他方式进行群组聊天?

3个回答

8

事实证明,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组件,我不会依赖它。它可能在未来的某个时候被删除。 - Flow
是的,我实际上希望他们删除它,以便使用传统的XEP-0045多用户聊天代替。不过目前这是一个可行的解决方案。 - berwyn

1
截至今天,谷歌聊天客户端均不支持XEP-45多用户聊天(MUC),也没有谷歌聊天宣布XMPP MUC组件。所有来自谷歌的谷歌聊天客户端都不支持MUC,这是您使用MultiUserChat.isServiceEnabled()进行检查的内容。但是,如果用户使用第三方XMPP客户端(例如Gajim)与谷歌聊天,则可以像任何其他XMPP用户一样加入MUC房间。另请参阅Google产品论坛上的这些问题:http://productforums.google.com/forum/#!topic/chat/HLyMGBxJM7Q。但是有一个例外,请参见此答案

谢谢你的回答。真的很遗憾 Google 不支持完整的 XMPP 规范 :( - berwyn
这是一个可选的XMPP扩展。Google Talk支持XMPP-CORE和-IM。 - Flow

0

我发现这个:Google Talk多用户聊天规范

它展示了Talk和XMPP规范之间的几个不同之处。希望在talk.google.com服务上创建或加入私人MUC房间的第三方客户端需要遵循这些规范。

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

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

  3. 如果用户希望在房间内更改昵称,则客户端必须在发送具有新昵称的存在状态之前将旧昵称设置为不可用。

当然,Talk支持XMPP。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接