Socket.io 使用 React 和 Node.js
Socket.io with React and Node.js
我有点新使用 sockets.io,我有一个非常基本的问题。
我在服务器端有这段代码,我基本上在其中尝试侦听名为 setName 的事件并传递用户名参数,然后向客户端发出一个名为“setNameCb”的新事件。
io.on("connection", (socket) => {
socket.on("setName", (username) => {
socket.emit("setNameCb", username);
});
});
而这段代码在客户端,我在点击按钮时尝试传递用户名。之后,我从服务器端监听 setNameCb 事件,并尝试获取用户名值。
const setNameFunction = () => {
socket.emit("setName", "Cristian");
};
socket.on("setNameCb", (username) => {
alert(username);
});
return (
<div className="App">
<button onClick={setNameFunction}>set name</button>
</div>
);
好的,一切正常,但问题是我收到了多个关于用户名的警报,我只是想不通为什么会这样。
非常感谢对此的解释。我知道这是一个非常基本的问题,但这将帮助我更好地理解这个概念。
非常感谢!
如果没有包装到 useEffect 中,则在每次渲染时都会创建 React 组件中的套接字侦听器。
useEffect(() => {
const setNameFunction = () => {
socket.emit("setName", "Cristian");
};
socket.on("setNameCb", (username) => {
alert(username);
});
}, [])
我有点新使用 sockets.io,我有一个非常基本的问题。
我在服务器端有这段代码,我基本上在其中尝试侦听名为 setName 的事件并传递用户名参数,然后向客户端发出一个名为“setNameCb”的新事件。
io.on("connection", (socket) => {
socket.on("setName", (username) => {
socket.emit("setNameCb", username);
});
});
而这段代码在客户端,我在点击按钮时尝试传递用户名。之后,我从服务器端监听 setNameCb 事件,并尝试获取用户名值。
const setNameFunction = () => {
socket.emit("setName", "Cristian");
};
socket.on("setNameCb", (username) => {
alert(username);
});
return (
<div className="App">
<button onClick={setNameFunction}>set name</button>
</div>
);
好的,一切正常,但问题是我收到了多个关于用户名的警报,我只是想不通为什么会这样。
非常感谢对此的解释。我知道这是一个非常基本的问题,但这将帮助我更好地理解这个概念。
非常感谢!
如果没有包装到 useEffect 中,则在每次渲染时都会创建 React 组件中的套接字侦听器。
useEffect(() => {
const setNameFunction = () => {
socket.emit("setName", "Cristian");
};
socket.on("setNameCb", (username) => {
alert(username);
});
}, [])