Para enviar algo a todos los clientes, usa:
io.sockets.emit('response', data);
Para recibir de clientes, usted usa:
socket.on('cursor', function(data) {
...
});
¿Cómo puedo combinar los dos para que cuando reciba un mensaje en el servidor de un cliente, envíe ese mensaje a todos los usuarios excepto al que envía el mensaje?
socket.on('cursor', function(data) {
io.sockets.emit('response', data);
});
¿Tengo que hackearlo enviando la identificación del cliente con el mensaje y luego verificando el lado del cliente o hay una manera más fácil?
javascript
node.js
socket.io
Switz
fuente
fuente
io
here.onlysocket
// sending to all clients except sender
, ¿para qué usar// sending a response to sender client only
?socket.to('others').emit('an event', { some: 'data' });
también se transmite en una habitación.De la respuesta @LearnRPG pero con 1.0:
Para responder al comentario de @Crashalot,
socketid
proviene de:fuente
socketid
para enviar a un socket individual?socket.id
de su objeto de socket.Aquí hay una respuesta más completa sobre lo que ha cambiado de 0.9.x a 1.x.
Quería editar la publicación de @soyuka pero mi revisión fue rechazada por una revisión por pares.
fuente
broadcast.emit envía el mensaje a todos los demás clientes (excepto al remitente)
fuente
Emitir cheatsheet
fuente
Para los espacios de nombres dentro de las salas, la lista de clientes en una sala (similar a la respuesta de Nav) es uno de los dos enfoques que he encontrado que funcionará. El otro es usar excluir. P.EJ
fuente
Otros casos
fuente
Se actualizó la lista para obtener más documentación.
Espero que esto ayude.
fuente
usa esta codificación
este socket.broadcast.emit () emitirá todo en la función excepto para el servidor que está emitiendo
fuente
io
dentro de esto si la devolución de llamada se define en otro archivoio
como globalEstoy usando espacios de nombres y habitaciones. Encontré
para trabajar donde
No
(si alguien más se enfrenta a ese problema)
fuente