Question

Je suis en train de créer un chat en direct avec JSJaC et ejabberd . Tout fonctionne, sauf que tous les visiteurs du site reçoivent le compte 'invité'. Si deux visiteurs essaient de partager une conversation en même temps, les réponses sont confuses ou le premier utilisateur est déconnecté.

Je peux définir le nom de l'invité de manière aléatoire, mais je dois ensuite vérifier si ce nom est enregistré ou s'inscrire automatiquement et espérer qu'il n'a pas été enregistré auparavant. J'ai essayé d'attribuer chaque nom de connexion à un nom de ressource aléatoire, mais les conversations étaient toujours fusionnées.

En résumé, je recherche le moyen le plus simple d'autoriser plusieurs connexions anonymes à démarrer des conversations individuelles avec le compte livechat. Encore mieux (mais facultatif) si le livechat peut effectuer un round robin vers un autre utilisateur lorsque le compte principal livechat est en discussion.

La solution peut être basée sur un client Web ou sur un serveur. Peu m'importe car je contrôle les deux (et ejabberd prend en charge divers modules).

BTW, lorsque je tente d’enregistrer automatiquement un compte enregistré, la démo JSJaC simpleclient renvoie:

An error occured:
Code: 409
Type: cancel
Condition: conflict

Je n'ai pas encore déterminé s'il est possible de l'ignorer ou de le remplacer par une configuration personnalisée de client ou de serveur. Je suppose que je pourrais simplement détecter cette erreur et réessayer sans enregistrer automatiquement, mais j'aimerais entendre des options meilleures / plus simples.

Était-ce utile?

La solution

Essayez d'activer le mode de connexion anonyme sur votre le serveur ejabberd? Ensuite, vous ne devez pas enregistrer les comptes clients, il vous suffit de choisir un nom d'utilisateur et un mot de passe aléatoires. Ejabberd doit les accepter.

Autres conseils

Je suppose que vous pouvez utiliser l'authentification externe dans ejabberd Je suis dans la même situation: je veux que les utilisateurs anonymes puissent se connecter au serveur, mais certains utilisateurs spéciaux peuvent également se connecter pour des tâches non restrictives ... J'ai donc décidé d'écrire un script php en tant que gestionnaire d'authentification pour ejabberd. Ensuite, toutes les connexions avec le nom commençant par anon_ * seront acceptées. et authentifier d'autres utilisateurs sur une base de données.

Nous rencontrions un problème similaire dans un projet: nous souhaitions que les utilisateurs puissent se connecter sans nécessiter de création de compte ni de conflit. L'enregistrement automatique ne fonctionnerait pas pour nous car les noms pouvaient entrer en conflit. En fin de compte, nous avons choisi la connexion anonyme avec l’authentification SASL dans ejabberd - elle permet la connexion anonyme et la création dynamique de compte et je crois que les comptes ne restent pas sur le système (ils ne sont en vie que lorsque la connexion est ouverte), mais de ce que je me souviens du Le serveur générera un identifiant aléatoire pour l'utilisateur.

Le problème d'identification du JID du GUID peut éventuellement être résolu en utilisant les Surnoms .

Configurer SASL

Page de support d'Ejabberd - SASL

Si le mode anonyme de ejabberd ne fonctionne pas, essayez de créer un GUID . pour le nom de base de chaque utilisateur, et enregistrez simplement l'utilisateur à la volée. Vous voudrez avoir un script périodique qui supprime les anciens comptes inutilisés de la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top