用 WebSocket 实现广播消息时,所有客户端都能收到吗?
我用 WebSocket 搭了个简单的聊天室,想实现一条消息发出去,所有在线用户都能看到。但目前只有自己能收到,其他人收不到,是我服务端没写对还是前端连接有问题?
前端是用 React 写的,连接逻辑大概是这样:
useEffect(() => {
const ws = new WebSocket('ws://localhost:8080');
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
setMessages(prev => [...prev, msg]);
};
// 发送消息
sendMessage = (text) => ws.send(JSON.stringify({ text }));
}, []);
服务端是 Node.js + ws 库,但不确定是不是广播逻辑没处理好……
记得处理下断开连接的情况,不然会内存泄漏。前端代码看起来没问题,确保发送的消息格式和服务端解析的一致。