【发布时间】:2021-04-10 20:25:56
【问题描述】:
我有一个带有 node.js、socket io 和 React.js 的聊天应用程序。问题:私信功能不起作用。
客户端:
socket.emit("chat message private", { userIDtoReceiveTheMessage, msg });
然后我的服务器将监听并发送给该特定用户:
socket.on("chat message private", ({ toUser, msg }) => {
console.log(`from ${id} to ${toUser}: ${msg}`);
let socketId = toUser;
io.to(socketId).emit("private msg", msg);
});
服务器控制台上的结果是: “从 X 到 Y:消息”(这是有效的!)
我的客户应该收到“msg”,但没有任何反应:
useEffect(() => {
socket.on("chat message", ({ nickname, msg }) => {
setChat([...chat, { nickname, msg }]);
});
socket.on("private msg", (msg) => {
console.log(msg);
setChat([...chat, msg]);
});
return () => {
socket.off();
};
}, [chat, toUser]);
对于特定用户(或任何用户),控制台上没有显示任何内容。
PS:所有其他聊天消息都是实时接收的。唯一的问题是那些使用:
io.to(socketId).emit("private msg", msg);
有什么建议吗?
【问题讨论】:
标签: javascript node.js reactjs socket.io