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

Websocket 8.5 sends `<Buffer>` to server. How to convert data on Server to JSON?

我正在测试 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) returns <Buffer>

console.log(a) returns object Object]

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

我很茫然。我究竟做错了什么?谢谢!

问题出在客户端。通过套接字发送时,您没有序列化 JSON。

在发送之前在客户端添加对 JSON.stringify() 的调用,它应该可以工作。

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