Estoy usando Socket.io con reaccionar para hacer una sala de chat, cuando un nuevo usuario se une a la sala, quiero enviar una actualización a todos los clientes.
const updateDiscussionClients = room => { let currentClients = RoomClients({room, io, connections}) console.log(currentClients); // printing correct data console.log(io.sockets.adapter.rooms.get(room)); socket.to(room).emit('clients_discussion', currentClients) } socket.on("join_discussion", (data) => { let room = 'room_' + data.id + data.name socket.join(room) updateDiscussionClients(room) })todo funciona bien, pero el mensaje recibido por el antiguo cliente, sin el último que
salida de los registros:
[ { name: 'Mohamad Zbib', id: '202100006' }, { name: 'pu10', id: '10' } ] Set(2) { 'pbKuaEdrfg7n83YyAAAD', '3QYOJCzlxxMOLquzAAAB' } el evento es recibido por pbKuaEdrfg7n83YyAAAD , pero 3QYOJCzlxxMOLquzAAAB no lo recibió, lo recibirá si ocurre una actualización más tarde
es 3QYOJCzlxxMOLquzAAAB remitente de ese evento, que no recibirá?
socket.to("room1").emit(/* ... */); enviará a todos en la habitación excepto al remitente. io.in("room1").emit(/* ... */); se enviará a todos en la habitación
Consulte esta hoja de trucos para obtener más información.