Websocket 8.5将`<Buffer>`发送到服务器。如何将服务器上的数据转换为JSON?

3

我正在测试websocket连接。我希望从客户端向服务器发送JSON对象:

const WebSocket = require('ws');
const wss = new WebSocket.Server({port: 8082});

wss.on("connection", (ws) => {
  console.log('server is connected');
  ws.on("message", (mesg) => {
    const a = mesg.toString();
    console.log(a);
  });
  ws.on("close", () => {
    console.log("Client has disconnected!");
  });
});

在服务器端: console.log(mesg) 返回 <Buffer>

console.log(a) 返回 object Object]

JSON.parse(a) 抛出错误信息。

我很困惑。我做错了什么?谢谢!


这对我来说没有意义。你是在说console.log(a)是一个对象。console.log(a)在服务器代码之上。所以,你不应该尝试将对象转换为JSON。 - AlxVallejo
1个回答

3

问题在客户端。发送JSON时,您没有将其序列化。

在发送之前,在客户端添加调用JSON.stringify(),然后应该就可以了。

在服务器上,则只需要使用 JSON.parse(mesg.toString()) 将缓冲区输出为字符串并反序列化JSON成对象即可。


1
谢谢。我浪费了几个小时来弄清楚为什么 JSON.parse(msg) 报错。msg.toString() 部分解决了它! - OXiGEN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接