WebSocket 返回message的疑问
问题描述:
相关代码:
client端 test.js
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:3000')
ws.on('open', function() {
console.log('client is conneted to server')
ws.send('hello from node')
ws.on('message', function(msg) {
// console.log('received: %s', msg)
console.log(msg)
})
})相关截图:
接受到客户端传递的消息是一个buffer

如果是
console.log('received: %s', msg)就可以正常打印消息

如果是使用浏览器连接(index.html)也会有这样的问题,是不是因为ws版本的问题, 我现在的版本是8.3.0
3
收起
正在回答 回答被采纳积分+1
1回答
Brian
2021-12-15 00:51:57
是的
从8.0.0的更改日志:
文本消息和关闭原因不再解码为字符串。它们作为Buffer传递给各自事件的侦听器。'message'事件的侦听器现在接受一个布尔参数,指定消息是否为二进制(e173423)。
可以通过显式解码缓冲区来迁移现有代码。
websocket.on('message', function message(data, isBinary) {
const message = isBinary ? data : data.toString();
// Continue as before.
});
websocket.on('close', function close(code, data) {
const reason = data.toString();
// Continue as before.
});
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星