You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js WebSocket Server的message事件无法触发问题求助

排查WebSocket服务器端on message事件不工作的问题

你的核心问题是对ws库的事件绑定逻辑理解有误,WebSocket.Server(即代码中的wss)本身不会触发message事件,客户端发送的消息是由单个连接的客户端实例触发的,也就是connection回调里的client对象。

修正后的server.js代码

const WebSocket = require("ws");

const PORT = 9999;

let wss = new WebSocket.Server({ port: PORT });

wss.on("connection", (client) => {
  client.send(`[server] ${new Date()}: hello new client`);

  // 把message事件绑定到当前连接的client实例上
  client.on("message", (message) => {
    // ws库中message回调的参数直接是消息内容,无需取data属性
    console.log(`message from client: ${message}`);
  });
});

关键修正点说明

  1. 事件绑定对象错误:原代码把message事件绑定在wss(WebSocket服务器实例)上,但该实例仅负责监听连接、关闭等服务器级事件,不会监听客户端消息。必须给每个成功连接的client实例单独绑定message事件。
  2. 消息参数处理错误:ws库中client.on('message')的回调参数直接是客户端发送的原始消息内容(Buffer或字符串),不需要像浏览器WebSocket那样访问message.data。

测试验证

重启你的Node服务器,打开客户端页面点击PING按钮,此时服务器控制台就能正常打印客户端发来的消息了。

内容的提问来源于stack exchange,提问作者user19646723

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:50:29