WebSocket 返回message的疑问

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

https://img1.sycdn.imooc.com//climg/61b775eb09bf07d603630077.jpg


如果是

console.log('received: %s', msg)

就可以正常打印消息

https://img1.sycdn.imooc.com//climg/61b776550903a11403390069.jpg


如果是使用浏览器连接(index.html)也会有这样的问题,是不是因为ws版本的问题, 我现在的版本是8.3.0




正在回答 回答被采纳积分+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 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师