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

关于npm websocket服务端发消息及connection对象的技术咨询

解决websocket包中WebSocketServer向客户端发消息的问题

我刚好在用这个npm的websocket包做项目,帮你理清这些问题:

1. 向客户端回发消息的核心方法

你可以通过connection对象的这两个明确的方法来发送消息:

  • 发送文本消息:使用connection.sendUTF('你的文本内容'),这是最常用的方式,比如在收到客户端消息后直接回复:
    connection.on('message', function(message) {
      // 处理收到的文本消息并回复
      if (message.type === 'utf8') {
        connection.sendUTF(`已收到你的消息:${message.utf8Data}`);
      }
    });
    
  • 发送二进制消息:如果需要传递二进制数据,用connection.sendBytes(Buffer.from('你的二进制数据'))。

另外也可以直接用connection.send()方法,它会根据传入的数据类型自动选择发送方式,但上面两个方法语义更明确,可读性更好。

2. connection对象的常用属性与方法

这个包的文档确实不算完善,但connection对象的核心能力其实很清晰:

常用属性

  • connected:布尔值,标记当前连接是否处于活跃状态
  • protocol:客户端与服务端协商后使用的协议(就是你request.accept里传的relay_protocol)
  • origin:发起连接的客户端源地址,和request.origin一致
  • remoteAddress:客户端的IP地址

常用方法

  • sendUTF():发送UTF-8格式的文本消息
  • sendBytes():发送二进制格式的数据
  • close([code], [reason]):主动关闭连接,可选传入标准关闭码和关闭原因
  • pause():暂停接收客户端发来的数据
  • resume():恢复接收客户端数据

常用事件

除了你已经用到的message,还有:

  • close:连接关闭时触发,会返回关闭码和关闭原因
  • error:连接出现异常时触发
  • open:连接建立成功时触发(不过你是在request.accept后拿到的connection,这个事件通常已经触发了)

关于你代码里的path属性

虽然官方文档没明确提及,但websocket包的WebSocketServer确实支持path参数,用来指定WebSocket监听的路径(比如你的/async),这个配置是有效的,不用担心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:12