WebSocket连接后收不到消息是怎么回事?
我用WebSocket连上了后端,onopen能正常触发,但发消息过去后,onmessage完全没反应,是不是哪里写错了?
后端说已经收到我的请求并返回了数据,但我前端就是收不到。试过在浏览器控制台看网络面板,Frames里确实有返回的数据帧,但代码里的onmessage就是不执行。
const ws = new WebSocket('ws://localhost:8080/chat');
ws.onopen = () => {
console.log('连接成功');
ws.send(JSON.stringify({ type: 'join', userId: '123' }));
};
ws.onmessage = (event) => {
console.log('收到消息:', event.data); // 这行从来没打印过
};
检查下后端代码,确认用的是WebSocket库的send方法,别用了http response。标准做法是这样:
如果后端是Node.js原生http写的,得用ws或socket.io这类库,別自己手动拼WebSocket帧,那玩意儿协议很复杂,容易踩坑。