我正在使用Ejabberd的MucSub方法来实现移动群聊客户端。用户创建会议室并将MUC邀请发送给必须是该组成员的用户。客户端配置为自动接受MUC邀请,然后订阅会议室的pubsub节点以进行各种活动。
然而,问题在于,非在线的用户在他未订阅节点之前不会收到任何已发布的事件,直到用户访问时才会发生这种情况在线一次,因此无法为这些用户发送推送通知。
实现这一目标的方法应该是什么?
答案 0 :(得分:0)
Sending an invitation to a given user is send as a direct message to the user. It is also stored in offline storage, so the user will get it on reconnect.
For example:
UserA sends this MUC invite for room@conference.localhost
to userB, userB being offline:
<message to='room@conference.localhost'>
<x xmlns='http://jabber.org/protocol/muc#user'>
<invite to='userB@localhost'/>
</x>
</message>
When UserB connects, he will receive the invite:
<message from="room@conference.localhost" type="normal" to="userB@localhost">
<x xmlns="http://jabber.org/protocol/muc#user">
<invite from="userA@localhost/laptop">
<reason/>
</invite>
</x>
<x xmlns="jabber:x:conference" jid="room@conference.localhost"/>
<body>userA@localhost/laptop invites you to the room room@conference.localhost</body>
<delay xmlns="urn:xmpp:delay" from="localhost" stamp="2016-11-09T08:10:58.063Z">Offline Storage</delay>
</message>
When userB receives the offline message on connect, he can subscribe to MUC events.