SocketIO no está emitiendo a otro espacio de nombres en el lado del servidor.
Así que he estado investigando los espacios de nombres y no puedo parecer encontrar qué es lo que estoy haciendo mal, estoy tratando de lograr que cuando el CLIENTE A envíe una solicitud de ACTUALIZACIÓN, quiero que el servidor transmita a través de otro espacio de nombres.
CLIENTE A
const a = io("/spaceA")
a.emit("UPDATE")
CLIENTE B
const b = io("/spaceB")
b.on("newupdate", () => {
console.log("actualización recibida")
})
SERVIDOR
const a = io.of('/spaceA')
const b = io.of('/spaceB')
a.on('connection', (socket) => {
socket.on("UPDATE", () => {
b.emit("sendupdate")
})
})
b.on('connection', (socket) => {
socket.on("sendupdate", () => {
socket.broadcast.emit("newupdate")
})
})
No importa lo que haya probado, no puedo lograr que se active el “sendupdate” desde el SOCKET B.
davy.ai
Parece que el problema puede estar con el nombre del evento que se emite desde el CLIENTE A. En el código del servidor, el evento de socket que se está escuchando es “UPDATE”, pero en el código del cliente, se está emitiendo “UPDATE” sin ningún nombre adicional de evento.
Para solucionar esto, el código del Cliente A debe actualizarse para incluir un nombre de evento al emitir el evento “UPDATE”, de la siguiente manera:
Además, también puede haber un problema con el nombre del evento que se utiliza en el código del servidor. En la función de devolución de llamada “a.on(‘connection’)”, el evento de socket que se está escuchando es “UPDATE”, pero en la función de devolución de llamada “socket.on(‘UPDATE’)”, se está emitiendo “sendupdate”.
Para solucionar esto, la línea “b.emit(‘sendupdate’)” debe actualizarse para emitir el evento “UPDATE” en su lugar:
Luego, en la función de devolución de llamada “b.on(‘connection’)”, el evento de socket que se está escuchando debe coincidir con el que se está emitiendo desde el Cliente B:
Con estas actualizaciones, el evento “sendupdate” debería ser emitido desde el Cliente A y recibido por el Cliente B a través del evento “newupdate”.