【问题标题】:XMPP Reserve nickname in MUC serviceXMPP 在 MUC 服务中保留昵称
【发布时间】:2016-04-01 16:45:51
【问题描述】:

我目前正在为移动平台实现一个 MUC(仅限会员)应用程序。我能够让 MUC 正常工作,并且移动客户端能够相互通信。

我要解决的问题是我希望用户在 MUC 服务中保留一个在所有房间都有效的昵称,这样任何人都无法在聊天中伪装他。我做了很多阅读,但没有找到任何合适的示例,说明用户可以在所有房间中保留昵称。

如果能帮助我找到正确的文档,我们将不胜感激。

谢谢, 米通

【问题讨论】:

  • 任何 XMPP 扩展都没有定义这样的功能。此外,在不修改服务器源代码的情况下,在 MongooseIM 中是不可能的,我几乎可以肯定,ejabberd 也不可能。免责声明:我是一名 MongooseIM 开发人员。
  • 嗨@erszcz,根据docs.ejabberd.im/admin/guide/configuration/#modmuc 有一段说明“MUC 服务允许任何 Jabber ID 注册昵称,因此其他人不能在 MUC 的任何房间使用该昵称服务。要注册昵称,请在 XMPP 客户端中打开服务发现并在 MUC 服务中注册。"
  • 这里也是ejabberd.im/node/3121,你可以看到有人评论说我们在MUC服务中注册了一个昵称。但没能举个例子..
  • 如果不为所有房间保留昵称,是否可以在特定房间中保留昵称??如果我能做到这一点,我至少可以防止在那个房间里伪装......谢谢

标签: xmpp ejabberd muc mongoose-im


【解决方案1】:

ejabberd mod_muc documentation 中所述,ejabberd MUC 服务允许在 MUC 服务级别为用户注册昵称:

MUC 服务允许任何 Jabber ID 注册昵称,所以没有人 else 可以在 MUC 服务的任何房间中使用该昵称。注册 昵称,在 XMPP 客户端中打开服务发现,然后 在 MUC 服务中注册。

您可以通过支持服务发现的客户端(如 Psi)轻松做到这一点。

在 XMPP 级别,它转换为以下 XMPP 数据包交换。发现步骤是可选的。

  1. 您可以在 MUC 服务上发送发现数据包以检查功能:
SEND:
<iq type="get" to="conference.localhost" id="aac1a">
 <query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
  1. 您将收到MUC服务功能列表,包括register
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac1a">
 <query xmlns="http://jabber.org/protocol/disco#info">
  <identity category="conference" type="text" name="Chatrooms"/>
  ...
  <feature var="jabber:iq:register"/>
  ...
 </query>
</iq>

这意味着您可以启动昵称注册过程:

  1. 您可以从 MUC 服务中检索昵称注册表:
SEND:
<iq type="get" to="conference.localhost" id="aac5a">
 <query xmlns="jabber:iq:register"/>
</iq>
  1. MUC 服务回复表单,包含一个字段(您要注册的昵称):
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac5a">
 <query xmlns="jabber:iq:register">
  <instructions>You need a client that supports x:data to register the nickname</instructions>
  <x xmlns="jabber:x:data" type="form">
   <title>Nickname Registration at conference.localhost</title>
   <instructions>Enter nickname you want to register</instructions>
   <field type="text-single" label="Nickname" var="nick">
    <value/>
   </field>
  </x>
 </query>
</iq>
  1. 您可以使用所需的昵称提交表单:
SEND:
<iq type="set" to="conference.localhost" id="aac6a">
 <query xmlns="jabber:iq:register">
  <x xmlns="jabber:x:data" type="submit">
   <field type="text-single" var="nick">
    <value>mickael</value>
   </field>
  </x>
 </query>
</iq>
  1. MUC 服务回复成功或错误。成功案例:
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac6a">
 <query xmlns="jabber:iq:register"/>
</iq>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2019-06-17
    • 2016-05-23
    • 2015-06-29
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多