关于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
相关产品推荐
相关产品推荐

