2011-09-16 19 views
11

Empecé a buscar en node y socket.io.socket.io chat con habitaciones privadas

Ya he creado una aplicación de chat simple y estoy sorprendido de lo fácil que fue.

Ahora, me gustaría llevar un poco más allá y proporcionar una lista de usuarios en línea que tienen la capacidad de chatear entre sí en privado.

¿Cuál sería la mejor manera de abordar esto?

Leo en la nueva función de habitación de 0.7. ¿Sería eso un camino por recorrer? ¿Cree dinámicamente una nueva sala cada vez que dos usuarios necesiten chatear en privado? ¿Pero cómo se notificará al segundo usuario de la nueva sala creada, para que pueda conectarse allí?

¿Es mejor manejar toda la lógica anterior? Almacene las habitaciones y los usuarios del lado del servidor y repáselos cada vez y envíe mensajes a los apropiados.

Gracias

Respuesta

13

Si la única funcionalidad que queremos es que dos personas sean capaces de enviar mensajes unos a otros (y no los grupos de personas que tienen una habitación), entonces la lógica podría ser algo como esto:

  1. Cuando un usuario se conecta, almacena su conexión en un objeto marcado por su nombre de usuario (o en cualquier otra estructura de datos que garantice que pueda encontrar la conexión de un usuario específico).
  2. Cuando un Bob quiere hablar con Jeff, envíele un evento al servidor.
  3. El servidor busca la conexión Socket.IO de Jeff en el objeto del paso 1.
  4. El servidor utiliza esta conexión para enviar a Jeff (y solo a Jeff) el mensaje privado.
+0

Derecha. Ambos son correctos. ¿Qué sucede si quiero tener grupos de personas? – Thomas

+0

Utilice la característica de las habitaciones Socket.IO incorporadas, o desarrolle las suyas agrupando las conexiones en algún tipo de estructura de datos, y luego itere sobre todos los miembros de una sala y envíe los datos en cada uno. –

+0

Preferiría usar la funcionalidad integrada, pero ¿cómo se pueden crear y destruir salas dinámicamente? – Thomas

1

Hej Thomas

si hay solamente 2 usuarios que hablar no necesito el uso publicar att todo sólo enviar ese mensaje desde el cliente al servidor y dejar que el servidor de localizar el otro cliente y enviarlo hacia abajo .

+0

No. Ese no es el caso. Digamos que tengo 100 usuarios y es decir, Bob quiere hablar con Jeff – Thomas

+1

, ese era mi punto si Bob quiere hablar con Jeff. No necesitan espacio propio, solo envíelo directamente a jeff y emita "privateMsg" y solo irá a jeff. . – megakorre

Cuestiones relacionadas