Xmpp 如何仅发送一个房间即可连接多个房间<;在场>;发送到ejabberd服务器的消息

Xmpp 如何仅发送一个房间即可连接多个房间<;在场>;发送到ejabberd服务器的消息,xmpp,ejabberd,multiuserchat,Xmpp,Ejabberd,Multiuserchat,例如,我有20个房间要加入。简单的解决方案是向每个房间id发送20条消息。考虑到性能,这是不好的 我想通过发送一条信息加入20个房间,如何实现?编写模块以钩住自定义消息?但是我不知道如何编写这种模块。在中,没有办法定义使用一个状态信息包加入20个聊天室 但是,通过将其他XMPP扩展与多用户聊天相结合,您完全可以在纯XMPP中实现这一点,而无需编写自定义ejabberd扩展 您可以信赖,您可以向多个收件人发送一个XMPP数据包。如图所示,它也适用于状态 ejabberd配置 XEP-0033扩展节

例如,我有20个房间要加入。简单的解决方案是向每个房间id发送20条消息。考虑到性能,这是不好的

我想通过发送一条
信息加入20个房间,如何实现?编写模块以钩住自定义
消息?但是我不知道如何编写这种模块。

在中,没有办法定义使用一个状态信息包加入20个聊天室

但是,通过将其他XMPP扩展与多用户聊天相结合,您完全可以在纯XMPP中实现这一点,而无需编写自定义ejabberd扩展

您可以信赖,您可以向多个收件人发送一个XMPP数据包。如图所示,它也适用于状态

ejabberd配置 XEP-0033扩展节寻址默认支持,因为。通过在ejabberd配置模块部分添加mod_多播,确保已启用该功能:

modules:
...
  mod_multicast: {}
启用该服务后,您应该在支持该功能的服务器上有一个新服务(默认名称为
multicast.example.net
)http://jabber.org/protocol/address:

<iq type='get'
    to='multicast.example.net'
    id='info1'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

回应如下:

<iq from="multicast.example.net" type="result" to="test@example.net/laptop" id="info1">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="service" type="multicast" name="Multicast"/>
<feature var="http://jabber.org/protocol/disco#info"/>
<feature var="http://jabber.org/protocol/disco#items"/>
<feature var="vcard-temp"/>
<feature var="http://jabber.org/protocol/address"/>
</query>
</iq>

用法 一旦启用,就可以轻松发送针对多个MUC房间的状态数据包:

<presence to='multicast.example.net'>
    <addresses xmlns='http://jabber.org/protocol/address'>
        <address type='bcc' jid='testroom@conference.example.net/Usernick'/>
        <address type='bcc' jid='testroom2@ conference.example.net/Usernick'/>
    </addresses>
</presence>

.

在中,无法定义使用一个状态信息包加入20个聊天室

但是,通过将其他XMPP扩展与多用户聊天相结合,您完全可以在纯XMPP中实现这一点,而无需编写自定义ejabberd扩展

您可以信赖,您可以向多个收件人发送一个XMPP数据包。如图所示,它也适用于状态

ejabberd配置 XEP-0033扩展节寻址默认支持,因为。通过在ejabberd配置模块部分添加mod_多播,确保已启用该功能:

modules:
...
  mod_multicast: {}
启用该服务后,您应该在支持该功能的服务器上有一个新服务(默认名称为
multicast.example.net
)http://jabber.org/protocol/address

<iq type='get'
    to='multicast.example.net'
    id='info1'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

回应如下:

<iq from="multicast.example.net" type="result" to="test@example.net/laptop" id="info1">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="service" type="multicast" name="Multicast"/>
<feature var="http://jabber.org/protocol/disco#info"/>
<feature var="http://jabber.org/protocol/disco#items"/>
<feature var="vcard-temp"/>
<feature var="http://jabber.org/protocol/address"/>
</query>
</iq>

用法 一旦启用,就可以轻松发送针对多个MUC房间的状态数据包:

<presence to='multicast.example.net'>
    <addresses xmlns='http://jabber.org/protocol/address'>
        <address type='bcc' jid='testroom@conference.example.net/Usernick'/>
        <address type='bcc' jid='testroom2@ conference.example.net/Usernick'/>
    </addresses>
</presence>


.

非常感谢!这真的很有帮助。等待问题得到解决。还有一个问题。消息只能在一节中发送,但它将从不同的房间接收多条消息。这将消耗移动网络上的大量数据。是否也可能只收到一条回复信息?不,不可能只收到多个联系人的一条信息。然而,如果您关心的是带宽,您应该查看流压缩或SSL压缩。非常感谢!这真的很有帮助。等待问题得到解决。还有一个问题。消息只能在一节中发送,但它将从不同的房间接收多条消息。这将消耗移动网络上的大量数据。是否也可能只收到一条回复信息?不,不可能只收到多个联系人的一条信息。然而,如果您关心的是带宽,则应该查看流压缩或SSL压缩。