XMPP 在 MUC 服务中保留昵称
XMPP Reserve nickname in MUC service
我目前正在为移动平台实施 MUC(仅限会员)应用程序。我能够让 MUC 正常工作,并且移动客户端能够相互通信。
我要解决的问题是,我希望用户在 MUC 服务中保留一个在所有房间都有效的昵称,这样就没有人可以在聊天中伪装他。我读了很多书,但没有找到任何关于用户可以在所有房间中保留昵称的适当示例。
如果能帮助我找到正确的文档,我们将不胜感激。
谢谢,
米顿
如ejabberd mod_muc
documentation所述,ejabberd MUC 服务允许在 MUC 服务级别为用户注册昵称:
The MUC service allows any Jabber ID to register a nickname, so nobody
else can use that nickname in any room in the MUC service. To register
a nickname, open the Service Discovery in your XMPP client and
register in the MUC service.
您可以从支持服务发现的客户端(如 Psi)轻松做到这一点。
在XMPP 级别,它转换为以下XMPP 数据包交换。发现步骤是可选的。
- 您可以在 MUC 服务上发送发现数据包来检查功能:
SEND:
<iq type="get" to="conference.localhost" id="aac1a">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
- 您将收到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>
这意味着您可以启动昵称注册过程:
- 您可以从 MUC 服务中获取昵称注册表:
SEND:
<iq type="get" to="conference.localhost" id="aac5a">
<query xmlns="jabber:iq:register"/>
</iq>
- 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>
- 您可以使用您想要的昵称提交表格:
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>
- MUC 服务回复成功或错误。成功案例示例:
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac6a">
<query xmlns="jabber:iq:register"/>
</iq>
我目前正在为移动平台实施 MUC(仅限会员)应用程序。我能够让 MUC 正常工作,并且移动客户端能够相互通信。
我要解决的问题是,我希望用户在 MUC 服务中保留一个在所有房间都有效的昵称,这样就没有人可以在聊天中伪装他。我读了很多书,但没有找到任何关于用户可以在所有房间中保留昵称的适当示例。
如果能帮助我找到正确的文档,我们将不胜感激。
谢谢, 米顿
如ejabberd mod_muc
documentation所述,ejabberd MUC 服务允许在 MUC 服务级别为用户注册昵称:
The MUC service allows any Jabber ID to register a nickname, so nobody else can use that nickname in any room in the MUC service. To register a nickname, open the Service Discovery in your XMPP client and register in the MUC service.
您可以从支持服务发现的客户端(如 Psi)轻松做到这一点。
在XMPP 级别,它转换为以下XMPP 数据包交换。发现步骤是可选的。
- 您可以在 MUC 服务上发送发现数据包来检查功能:
SEND:
<iq type="get" to="conference.localhost" id="aac1a">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
- 您将收到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>
这意味着您可以启动昵称注册过程:
- 您可以从 MUC 服务中获取昵称注册表:
SEND:
<iq type="get" to="conference.localhost" id="aac5a">
<query xmlns="jabber:iq:register"/>
</iq>
- 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>
- 您可以使用您想要的昵称提交表格:
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>
- MUC 服务回复成功或错误。成功案例示例:
RECV:
<iq from="conference.localhost" type="result" to="test@localhost/MacBook-Pro-de-Mickael" id="aac6a">
<query xmlns="jabber:iq:register"/>
</iq>