问题
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