Ejabberd not sending presence stanza to other roster members

妖精的绣舞 提交于 2019-12-11 03:56:51

问题


I have an internal web chat application implemented in python/django and using ejabberd 2.1.3 and Strophe.js. When you open the website with a special access link, a cmd line call is executed to add you to a shared roster group:

ejabberdctl srg_user_add 00024-540-1mCYpYTTCRcjJK5OWI7cWs xmpp.mydomain.com
1mCYpYTTCRcjJK5OWI7cWs xmpp.mydomain.com

The executes successfully and if I execute this cmd manually the members are shown fine:

ejabberdctl srg_get_members 1mCYpYTTCRcjJK5OWI7cWs xmpp.mydomain.com
00024-540-1mcypyttcrcjjk5owi7cws@xmpp.mydomain.com
01114-540-1mcypyttcrcjjk5owi7cws@xmpp.mydomain.com

However, in the Strophe.js presence handler I only receive a presence stanza for myself, meaning if I open two different links in two different browsers for two different members, I do not receive a presence stanza for the other member. If set the ejabberd log level to debug, this is reflected here.

<presence xmlns='jabber:client' from='0031-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3189433061352390311794558' to='0031-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3189433061352390311794558'/>
<presence xmlns='jabber:client' from='0030-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3319710041135238652858307' to='0030-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3319710041135238652858307'/>

It's missing the stanza to the other member:

<presence xmlns='jabber:client' from='0031-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3189433061352390311794558' to='0030-666-vjuuogji8mxvo5edtsvre@xmpp.mydomain.com/3319710041135238652858307'/>

I have the same setup on a second server where it works fine, and I see the stanzas exactly as expected. Before, it also worked on the problem server, but last week we had a total power failure in the data center and the server went down. Since then I cannot seem to get it to work again. Could it be that some files might have been corrupted due to the power loss? Is there something I should clean up? Unfortunately the previously responsible person is no longer in our company...


回答1:


I found the problem - due to some stupid internal reasons, the

ejabberdctl srg_create ...

was missing, so the members were added to a non-existent group. I just do not understand why the srg_user_add and srg_get_members commands worked without error. If they had given some hint about the group not existing I would have found the problem sooner



来源:https://stackoverflow.com/questions/13305720/ejabberd-not-sending-presence-stanza-to-other-roster-members

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!