Pregunta

Estoy creando un chat en vivo usando JSJaC y ejabberd . Todo funciona, excepto que todos los visitantes del sitio reciben la cuenta 'invitado'. Si dos visitantes intentan chatear en vivo al mismo tiempo, las respuestas se confunden o el primer usuario se desconecta.

Puedo establecer aleatoriamente el nombre del invitado, pero luego debo verificar si ese nombre está registrado o registrarse automáticamente y espero que no se haya registrado antes. Intenté asignar cada inicio de sesión a un nombre de recurso aleatorio, pero aún así fusionó las conversaciones.

En resumen, estoy buscando la forma más fácil de permitir que varios inicios de sesión anónimos inicien conversaciones individuales con la cuenta de chat en vivo. Aún mejor (pero opcional) si el chat en vivo podría hacer un round-robin a un usuario diferente cuando la cuenta principal de chat en vivo está en un chat.

La solución puede estar basada en un cliente web o en un servidor, no me importa ya que controlo ambos (y ejabberd admite varios módulos).

Por cierto, cuando trato de registrar automáticamente una cuenta registrada, la demostración JSJaC simpleclient devuelve:

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

Todavía no he establecido si esto es algo que puedo ignorar o anular con una configuración personalizada de cliente o servidor. Supongo que podría detectar este error e intentarlo nuevamente sin registro automático, pero me gustaría escuchar opciones mejores / más fáciles.

¿Fue útil?

Solución

Intente habilitar modo de inicio de sesión anónimo en su servidor ejabberd? Entonces no tiene que registrar las cuentas del cliente, simplemente elija cualquier nombre de usuario y contraseña aleatorios y ejabberd debería aceptarlos ...

Otros consejos

Supongo que puedes usar autenticación externa en ejabberd Estoy en la misma situación: quiero que los usuarios anónimos puedan iniciar sesión en el servidor, pero algunos usuarios especiales también pueden iniciar sesión para tareas adiminstrativas ... Así que decidí escribir un script php como controlador de autenticación para ejabberd. Luego aceptará todos los inicios de sesión con el nombre que comienza con anon_ * y autenticar a otros usuarios contra una base de datos.

Tuvimos un problema similar en un proyecto: queríamos que los usuarios pudieran iniciar sesión sin requerir ninguna creación de cuenta o conflictos, el registro automático no funcionaría para nosotros porque los nombres podrían entrar en conflicto. Al final, elegimos el inicio de sesión anónimo con autenticación SASL en ejabberd: permite el inicio de sesión anónimo y la creación dinámica de cuentas y creo que las cuentas no permanecen en el sistema (están vivas solo mientras la conexión está abierta), sin embargo, según recuerdo. el servidor generará una identificación aleatoria para el usuario.

El problema GUID JID podría resolverse con el uso de Apodos

Configure SASL

Página de soporte de Ejabberd - SASL

Si no puede hacer funcionar el modo anónimo de ejabberd, puede intentar crear un GUID para el nombre base de cada usuario, y solo registrar al usuario sobre la marcha. Querrá tener una secuencia de comandos periódica que elimine las cuentas antiguas no utilizadas de la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top