【发布时间】:2022-01-24 03:48:10
【问题描述】:
我在单独的 NodeJS 服务器上使用 socket.io,并使用 socket.io-client 将 ReactJS 客户端连接到它。
连接正常,直到我向房间发送消息。
在我的服务器端我有:
const io = new Server(server, {
cors: {
origin: ["http://localhost:3000"],
methods: ["GET", "POST"],
},
});
io.on("connection", (socket) => {
console.log(socket.id);
socket.join("test");
socket.on("newMessage", (data) => {
console.log("new msg");
io.to("test).emit("message", "testing");
});
});
在 React.js 客户端上:
import React from "react";
import "./App.css";
import io from "socket.io-client";
const socket = io("http://localhost:4000");
function App() {
const newEvent = () => {
socket.emit("newMessage", "test");
};
socket.on("message", () => {
console.log("message recieved");
});
return (
<div className="App">
<button onClick={newEvent}>Emit message</button>
<p>test</p>
</div>
);
}
export default App;
当服务器发出 io.to("test).emit("message", ... ) 时,客户端的 socket.on("message") 方法会运行多次
我还没有找到解决这个重复问题的方法,有没有办法让消息只向客户端发出一次而不是多次?
【问题讨论】:
标签: node.js reactjs sockets websocket socket.io