ejabberd MucSub不工作

时间:2018-01-19 01:17:21

标签: xmpp ejabberd

我正在开发一个XMPP客户端,通过我们自己托管的ejabberd社区服务器(版本17.09)进行通信。

我无法实现MucSub功能(据我所知,从版本16.08开始支持)。

当我发送这个XML命令时(在ejabberd文档中描述订阅聊天室):

<iq from='hag66@shakespeare.example'
to='coven@muc.shakespeare.example'
type='set'
id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>
  <subscribe xmlns='urn:xmpp:mucsub:0'
             nick='mynick'
             password='roompassword'>
    <event node='urn:xmpp:mucsub:nodes:messages' />
    <event node='urn:xmpp:mucsub:nodes:affiliations' />
    <event node='urn:xmpp:mucsub:nodes:subject' />
    <event node='urn:xmpp:mucsub:nodes:config' />
  </subscribe>
</iq>

(当然为这个服务器输入现有的jid,对于这个聊天室,allow_subscription设置为true)我得到了结果:

<iq xml:lang='de'
to='hag66@shakespeare.example'
from='coven@muc.shakespeare.example'
type='error' id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>
<subscribe xmlns='urn:xmpp:mucsub:0' nick='mynick'>
    <event node='urn:xmpp:mucsub:nodes:messages'/>
    <event node='urn:xmpp:mucsub:nodes:affiliations'/>
    <event node='urn:xmpp:mucsub:nodes:subject'/>
    <event node='urn:xmpp:mucsub:nodes:config'/>
  </subscribe>
<error code='503' type='cancel'>
<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<text xml:lang='de' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>No module is handling this query</text>
</error>
</iq>

当我将查询更改为:

<iq from='hag66@shakespeare.example'
to='coven@muc.shakespeare.example'
type='set'
id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>
  <subscribe xmlns='urn:xmpp:mucsub:0'
             nick='mynick'
             password='roompassword'>
    <event xmlns="http://jabber.org/protocol/pubsub#event" node="urn:xmpp:mucsub:nodes:messages" />
    <event xmlns="http://jabber.org/protocol/pubsub#event" node="urn:xmpp:mucsub:nodes:affiliations' />
    <event xmlns="http://jabber.org/protocol/pubsub#event" node="urn:xmpp:mucsub:nodes:subject' />
    <event xmlns="http://jabber.org/protocol/pubsub#event" node="urn:xmpp:mucsub:nodes:config' />
  </subscribe>
</iq>

我得到了结果:

<iq xmlns="jabber:client" 
to="hag66@shakespeare.example" 
xml:lang="en" 
type="result" 
from="coven@muc.shakespeare.example" 
id="agsXMPP_8">
   <subscribe xmlns="urn:xmpp:mucsub:0" nick="mynick" />
</iq>

我将其解释为查询成功。此外,当我查询Chatrooms时,此用户订阅了聊天室列表。

我现在的问题是:无论我使用哪种方法,如果用户不在此聊天室中,就不会收到该聊天消息的通知。

现在最奇怪的是:如果我从服务器获得DiscoInfo,则不会列出MucSub功能(urn:xmpp:mucsub:0),我不明白,因为服务器版本支持该功能我是默认情况下启用使用和根据文档,甚至无法禁用。

有没有人遇到同样的问题和/或知道如何解决它?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

最后我们发现了这个问题:

而不是将请求发送到“coven@muc.shakespeare.example”,我们将其发送到“coven@shakespeare.example”,这些内容无法正常工作,并且忘记在问题文本中进行更改