2016-11-09 80 views
1

我正在使用Ejabberd的MucSub方法來實現移動組聊天客戶端。用戶創建一個房間並向必須是該組成員的用戶發送MUC邀請。客戶端被配置爲自動接受MUC邀請,然後爲各種事件訂閱房間的pubsub節點。ejabberd MUC-SUB事件通知直到接受MUC邀請

但是這個問題是,,在不在線也不會直到他未簽約節點,這是不可能發生的,直到用戶上線一次,因此發送推送通知接收任何公佈的事件用戶這些用戶對於這些事件是不可能的。

實現此目的的方法是什麼?

回答

0

向給定用戶發送邀請將作爲直接消息發送給用戶。它也存儲在離線存儲中,因此用戶將重新連接。

例如:

  1. 用戶A發送該MUC邀請[email protected]到用戶B,用戶B是離線:

    <message to='[email protected]'> 
        <x xmlns='http://jabber.org/protocol/muc#user'> 
        <invite to='[email protected]'/> 
        </x> 
    </message> 
    
  2. 當用戶B連接,就可以得到邀請:

    <message from="[email protected]" type="normal" to="[email protected]"> 
    <x xmlns="http://jabber.org/protocol/muc#user"> 
        <invite from="[email protected]/laptop"> 
        <reason/> 
        </invite> 
    </x> 
    <x xmlns="jabber:x:conference" jid="[email protected]"/> 
    <body>[email protected]/laptop invites you to the room [email protected]</body> 
    <delay xmlns="urn:xmpp:delay" from="localhost" stamp="2016-11-09T08:10:58.063Z">Offline Storage</delay> 
    </message> 
    

當用戶B在連接上收到離線消息時,他可以訂閱MUC事件。

+0

是@MickaëlRémond,這就是我已經實現它的唯一問題是我想在用戶接受邀請和訂閱之前生成發送到房間的消息的推送通知。我們可以通過某種方式實現這一目標嗎? – sainiankit

+0

嗯,這是一個自定義用例,所以你必須以某種方式自己實現它。大多數部署不希望在用戶接受邀請之前推送聊天室中所有消息的通知。這感覺就像推送垃圾郵件。 –