2016-11-09 2 views
1

J'utilise l'approche MucSub d'Ejabberd pour implémenter un client de conversation de groupe mobile. Un utilisateur crée une salle et envoie des invitations MUC aux utilisateurs qui doivent être membres de ce groupe. Les clients sont configurés pour accepter automatiquement les invitations MUC, puis s'abonner au nœud pubsub de la salle pour divers événements.ejabberd Notification d'événement MUC-SUB jusqu'à ce que l'invitation MUC est acceptée

Cependant, le problème est que, un utilisateur qui ne sera en ligne ne recevra aucun événement publié jusqu'à ce qu'il ne souscrit au nœud et cela ne peut se produire jusqu'à ce que l'utilisateur est en ligne une fois, d'où l'envoi de notifications push à de tels utilisateurs pour ces événements n'est pas possible.

Quelle devrait être l'approche pour y parvenir?

Répondre

0

L'envoi d'une invitation à un utilisateur donné est envoyé en tant que message direct à l'utilisateur. Il est également stocké dans le stockage hors ligne, de sorte que l'utilisateur l'obtiendra lors de la reconnexion.

Par exemple:

  1. UtilisateurA envoie cette CUM invitent à [email protected] à userB, userB être déconnecté:

    <message to='[email protected]'> 
        <x xmlns='http://jabber.org/protocol/muc#user'> 
        <invite to='[email protected]'/> 
        </x> 
    </message> 
    
  2. Quand UtilisateurB se connecte, il recevra l'invitation:

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

Lorsque l'utilisateur B reçoit le message hors connexion lors de la connexion, il peut s'abonner aux événements MUC.

+0

Oui @ Mickaël Rémond, C'est exactement comme cela que je l'ai implémenté, le seul problème que j'ai est que je veux générer des notifications push pour les messages envoyés à la salle avant que l'utilisateur accepte l'invitation et s'abonner. Est-ce que nous pouvons y arriver d'une façon ou d'une autre? – sainiankit

+0

Eh bien, c'est un cas d'utilisation personnalisé, donc vous devez l'implémenter vous-même d'une manière ou d'une autre. La plupart des déploiements ne souhaitent pas envoyer de notifications pour tous les messages dans une salle de conversation avant que l'utilisateur n'accepte l'invitation. Cela ressemble à du spam. –