tengo 2 componentes
const CompA = () => { useEffect(() => { socket.on("test_response", (d) => { debugger; }); socket.emit("test", { comp: "a" }); }, []); return <h1>im comp A</h1>; }; const CompB = () => { useEffect(() => { socket.on("test_response", (d) => { debugger; }); socket.emit("test", { comp: "b" }); }, []); return <h1>im comp B</h1>; };Servidor:
io.on("connection", (socket) => { console.log("a user connected"); socket.on("disconnect", (reason) => { console.log("user disconnected", reason); }); socket.on("test", (d) => { socket.emit("test_response", { message: "your request is", data: d }); }); });parece que CompA y CompB reciben ambas respuestas de API para cualquiera de las solicitudes de cualquiera de ellos. ¿Cómo puedo separar la respuesta de la API para que sea solo para quién emitió el evento?
Creo que debería usar estos https://socket.io/docs/v4/namespaces/ espacios de nombres que le permiten separar diferentes tipos de receptores, por ejemplo, podría emitir de esta manera.
socket.emit("test", { comp: "b" }); // receive test like this socket.on("test", (d) => { socket.of(d.comp).emit("test_response", { message: "your request is", data: d }); }); //socket.of('A').emit("test_response", { message: "your request is", data: d }); //socket.of('B').emit("test_response", { message: "your request is", data: d });y recibir así en Comp A
socket.of('A').on("test_response", (d) => { debugger; });