我目前正在为移动平台实施MUC(仅限会员)应用程序。我能够让MUC工作,移动客户端能够相互通信。
我想解决的问题是,我希望用户在MUC服务中保留一个昵称,该昵称在所有房间都有效,这样任何人都无法在聊天中伪装他。我已经做了很多阅读,但没有找到任何适当的例子,用户可以在所有房间预留昵称。
任何帮助我指出正确的文件都将不胜感激。
谢谢, 大额牛
答案 0 :(得分:2)
如ejabberd mod_muc
documentation所述,ejabberd MUC服务允许在MUC服务级别为用户注册昵称:
MUC服务允许任何Jabber ID注册昵称,所以没人 否则可以在MUC服务的任何房间使用该昵称。注册 昵称,在您的XMPP客户端中打开服务发现 在MUC服务中注册。
您可以从支持服务发现的客户端(如Psi)轻松完成此操作。
在XMPP级别,它转换为以下XMPP数据包交换。发现步骤是可选的。
SEND:
<iq type="get" to="conference.localhost" id="aac1a">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
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>
这意味着您可以启动昵称注册过程:
SEND:
<iq type="get" to="conference.localhost" id="aac5a">
<query xmlns="jabber:iq:register"/>
</iq>
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>
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>
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac6a">
<query xmlns="jabber:iq:register"/>
</iq>