XMPP中的XMPP保留昵称

时间:2015-12-27 18:06:10

标签: xmpp ejabberd muc mongoose-im

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

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

任何帮助我指出正确的文件都将不胜感激。

谢谢, 大额牛

1 个答案:

答案 0 :(得分:2)

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

  

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

您可以从支持服务发现的客户端(如Psi)轻松完成此操作。

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

  1. 您可以在MUC服务上发送发现数据包以检查功能:
  2. SEND:
    <iq type="get" to="conference.localhost" id="aac1a">
     <query xmlns="http://jabber.org/protocol/disco#info"/>
    </iq>
    
    1. 您将收到MUC服务功能列表,包括register
    2. 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服务中检索昵称注册表单:
      2. SEND:
        <iq type="get" to="conference.localhost" id="aac5a">
         <query xmlns="jabber:iq:register"/>
        </iq>
        
        1. MUC服务回复表单,其中包含一个字段(您要注册的昵称):
        2. 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. 您可以使用所需的昵称提交表单:
          2. 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服务回复成功或错误。成功案例:
            2. RECV:
              <iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac6a">
               <query xmlns="jabber:iq:register"/>
              </iq>