2010-09-24 8 views
0

J'ai une extension GChome à l'écoute du serveur XMPP. J'utilise Strophe pour la connexion BOSH. Le problème est "comment devrais-je gérer la connexion?" A partir du wiki principal de XMPP, j'ai trouvé que le dernier client connecté/priorisé reçoit des messages. Et lorsque l'utilisateur est connecté depuis un autre endroit, l'extension cesse de recevoir le message. Comment puis-je gérer cette absence de connexion. J'espère que la question n'est pas très ambigu =).Préservation d'une connexion XMPP

+0

Lorsque vous mentionnez « l'utilisateur est connecté à partir othe r place ", l'utilisateur s'est-il connecté exactement avec la même ressource que Extension? Par conception, XMPP ne permet qu'une seule ressource de connexion par utilisateur PER (si vous vous connectez en tant que ressource différente à deux endroits différents, cela fonctionnera.) Cependant, l'administrateur du serveur XMPP a la capacité de forcer un utilisateur à se connecter à un serveur. Serveur XMPP à la fois - Tout dépend de la configuration. – DashK

Répondre

0

Assurez-vous d'utiliser une ressource différente pour chaque connexion. La meilleure façon de le faire est d'avoir le serveur de générer le nom de la ressource, comme spécifié dans RFC 3920bis, section 7.5, en ayant votre envoi client:

<iq id='tn281v37' type='set'> 
    <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> 
</iq> 

Et guettant le serveur pour répondre à l'ensemble généré Jabber ID:

<iq id='tn281v37' type='result'> 
    <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> 
    <jid> 
     [email protected]/4db06f06-1ea4-11dc-aca3-000bcd821bfb 
    </jid> 
    </bind> 
</iq> 

Gardez à l'esprit que le serveur peut appliquer un maximum de ressources, de sorte que vous pourriez obtenir une erreur:

<iq id='wy2xa82b4' type='error'> 
    <error type='wait'> 
    <resource-constraint 
     xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> 
    </error> 
</iq>