Estoy usando node.js y socket.io para crear una aplicación de chat. Cómo enviar un mensaje a otro socket, conozco el id del socket o el nombre de usuario solamente. No hay habitaciones, los clientes chatean uno a uno.Enviando mensaje a un socket único
8
A
Respuesta
21
Con Socket.IO, no está limitado a usar únicamente el objeto socket dentro de la devolución de llamada de la función de conexión. Puede crear un objeto que almacene el objeto de socket para un nombre de usuario particular y buscar el socket para enviar un mensaje cuando un cliente emita un mensaje. Debería transmitir el objetivo deseado con cada mensaje.
Ejemplo:
var sockets = {};
...
io.on('connection', function(socket){
socket.on('set nickname', function (name) {
sockets[name] = socket;
});
socket.on('send message', function (message, to) {
sockets[to].emit(message);
});
});
Ver más ejemplos en la examples page of Socket.IO's website.
0
Puede comprobar la propiedad nombre de usuario de todos los zócalos de esta manera:
socket.on('send message', function(message,to){
io.sockets.clients().forEach(function (socket) {
if (socket.username==to){socket.emit(message);}
});
});
Cuestiones relacionadas
- 1. Enviando un mensaje a cero en Objective-C
- 2. SignalR OnConnected - Enviando Cliente Conectado un Mensaje
- 3. Enviando mensajes a todos los navegadores con socket io
- 4. Enviando int a través del socket en Java
- 5. Java enviando archivo cifrado a través del socket
- 6. Mensaje único de Azure Queue
- 7. iPhone enviando mensaje POST con NSURLConnection
- 8. Enviando mensaje con 401: Asp.net Web-api
- 9. Toast "enviando un mensaje a un controlador en un hilo muerto"
- 10. Enviando un encabezado de mensaje de 4 bytes del cliente C# a un servidor Java
- 11. Android - Enviando mensaje a un controlador en un hilo muerto, Toast error
- 12. Error de socket: 90: mensaje Demasiado largo
- 13. Enviando mensajes de PHP a Node.js
- 14. enviando matriz de bytes múltiple sobre el socket
- 15. Enviando un mensaje a todas las ventanas/pestañas abiertas usando JavaScript
- 16. Enviando mensaje al objeto usando selector y NSSelectorFromString
- 17. Enviando correo electrónico usando smtp y estableciendo el id-mensaje
- 18. Enviando un SMS en Android
- 19. Enviando un paquete a través de un módulo kernel
- 20. Enviando un mensaje a un controlador sobre un hilo inactivo al obtener una ubicación de un servicio de intención
- 21. ¿Cómo cambio los permisos a un socket?
- 22. Enviando SIGINT a un subproceso de python
- 23. Enviando y recibiendo un archivo (Servidor/Cliente) en C usando socket en Unix
- 24. ¿Cómo saber de qué interfaz recibió el mensaje el socket?
- 25. Enviando pantalla completa, desapareciendo SMS a un iPhone
- 26. escribiendo atómicamente en un socket
- 27. Android Bluetooth enviando archivo
- 28. Cómo vincular un socket a múltiples interfaces
- 29. Enviar un mensaje a un cliente a través de su socket.id
- 30. Escribir datos binarios en un socket (o archivo) con Python
grande, que es la solución –
Cómo manejar "a" es no pertenece a ningún apodo? Por ejemplo; El apodo "A" es enviar mensaje al Apodo "B", el apodo "B" es enviar mensaje a Apodo "C". Y no hay Apodo "C" Entonces da error = "no se puede leer la propiedad 'emitir' de indefinido" – drojokef