2016-11-09 3 views
1

私はEjabberdのMucSubアプローチを使用してモバイルグループチャットクライアントを実装しています。ユーザは会議室を作成し、このグループのメンバーである必要があるユーザにMUC招待状を送信します。クライアントはMUC招待状を自動受諾し、さまざまなイベントの会議室のpubsubノードに登録するように設定されています。ejabberd MUC-SUBイベント通知(MUC招待が受け入れられるまで)

これに伴う問題は、彼がノードに加入していないと、ユーザーがそのためにプッシュ通知を送信し、一度オンラインになるまで、この現象が発生することはできませんまではなかっオンライン任意の発表されたイベントを受信しませんということ、そのユーザであるしかし、これらのイベントのためのそのようなユーザは不可能である。

これを達成するためのアプローチは何ですか。

答えて

0

特定のユーザーへの招待状の送信は、ユーザーに直接メッセージとして送信されます。オフラインストレージにも格納されているので、ユーザーは再接続時にそれを取得します。例えば

<message to='[email protected]'> 
    <x xmlns='http://jabber.org/protocol/muc#user'> 
    <invite to='[email protected]'/> 
    </x> 
</message> 
  • ユーザーBが接続すると、彼は招待を受け取ることになります:

    1. ユーザーAはこのMUCがユーザーB、ユーザーBがオフラインであることに[email protected]のためにINVITEを送信する

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

    userBがconnectでオフラインメッセージを受信すると、MUCイベントを購読できます。

  • +0

    はい@MickaëlRémond、私が実装したのは、ユーザーが招待を受け付けて登録する前にルームに送信されたメッセージのプッシュ通知を生成したいという唯一の問題です。何らかの方法で達成できる可能性はありますか? – sainiankit

    +0

    これはカスタムユースケースなので、何らかの方法でこれを実装する必要があります。ほとんどのデプロイメントでは、ユーザーが招待を承諾する前に、チャットルーム内のすべてのメッセージの通知をプッシュしたくありません。それはスパムを押し込むように感じる。 –

    関連する問題