J'ai implémenté une extension chromée qui permet d'utiliser la discussion XMPP sur la connexion BOSH avec Punjab Server exécuté sur un serveur distant. Il est mis en œuvre à l'aide de la bibliothèque JavaScript Strophe. La question que je rencontre est lorsque j'ai plusieurs sessions du même utilisateur (par exemple deux navigateurs différents sur la même machine), je ne peux pas recevoir et vous connecter à la deuxième fenêtre de discussion du message que j'ai envoyé à partir de la première fenêtre de discussion. Il doit y avoir un mécanisme qui permet de cela. Puis-je recevoir des messages d'une manière ou d'une autre que j'ai envoyé à un autre utilisateur? Le problème peut également être reproduit sur 2 machines différentes ou plus, de sorte que cela doit également être résolu aussi. P>
merci. p>
4 Réponses :
Vous devez comprendre comment fonctionnent les Jids, quelles priorités sont et comment envoyer des messages.
Un JID est de la forme: MAINTENANT, lorsqu'un utilisateur envoie un message, le Vous pouvez définir la priorité (un entier dans [-128, 127]) lorsque vous envoyez votre présence (voir le RFC pour une spécification complète) Par exemple: P> utilisateur @ Domain / ressource Code> P> P> P> Les Jids des utilisateurs connectés doivent être uniques. Typiquement, lorsque vous utilisez un client Web, vous affectez une ressource aléatoire à chaque session afin de ne pas avoir d'affrontement. P>
à code> attribut code> Code>
<presence>
<status>Learning XMPP</status>
<priority>1</priority>
</presence>
Le numéro 2 est inexact. Il peut livrer au tout tel que défini ou livrer à un destinataire en fonction de certains autres critères spécifiques de la mise en œuvre. Section 11.1 Stanzas entrante . Toujours une bonne réponse cependant.
@Robin Aha, c'était surtout hors de mémoire et bien sûr que vous avez raison. Amendement.
Si vous souhaitez avoir la conversation entière, y compris les messages que vous envoyez de em> votre client à afficher sur une autre session, alors Les carbones sont la fonctionnalité que vous recherchez. J'ai Mise en œuvre ceci dans un plugin pour Prosody . P>
La partie client requise ne devrait pas être trop difficile à écrire, voici ici dans le verset Bibliothèque . P>
Faites une longue histoire courte!
Utilisation: p> et non: p> Le dernier paramètre Appelé ressource, et représente votre station que vous vous connectez de. p> De cette façon, vous pouvez vous connecter avec le même nom d'utilisateur, mais toujours à partir de 2 périphériques. p> p>
Si vous activez des carbones: xep-0280: Carbons de message pendant que vous détectez plusieurs Connexion, XMPP Server enverra un message de carbone à vos autres sessions connectées sur différents périphériques N'oubliez pas de l'activer pour toutes les sessions. Ainsi, les deux sessions recevront les messages d'envoi et de réception. Pour le cas de message de réception, si vous êtes activé en carbone, en présence n'effectuera pas. P> Encore une fois, si vous souhaitez qu'un message ne soit pas copié en carbone, ajoutez
<private xmlns='urn:xmpp:carbons:2'/>
<no-copy xmlns='urn:xmpp:hints'/>