一、前言
这是一个使用WebSocket通信时解析数据类型的学习笔记。
在socket通讯是要使用 ArrayBuffer 或 String 类型进行发送,想要发送json对象、数组等其他类型的数据就必须转换数据类型,下面我将json对象转换成字符串进行数据交换。
二、环境 Nodejs + ws
安装
npm init
npm i ws
服务端代码
server.js
const WebSocket = require('ws'); //导入websocket模块
const wss = new WebSocket.Server({ //创建一个WebSocket Server的实例
host: "0.0.0.0",
port: 9000,
});
//监听app客户端连接事件
wss.on('connection', function connection(ws) {
//监听消息,接收到消息触发回调函数
ws.on('message', function incoming(recvAppData) {
console.log('received: %s', recvAppData); //打印接收消息
let data = {Name: "alis"};
ws.send(data); //发送消息
});
});
客户端代码
client.js
const WebSocket = require('ws')
const ws = new WebSocket('ws://localhost:9000') //连接
ws.on('open', () => { //已连接
ws.send('connected'); // 发送
})
// 接收
ws.on('message', (message) => {
console.log(message);
})
运行以上代码会报错,是发送数据类型错误。
三、解决方案
只需要将要发送的json对象用 JSON.stringify()
转成字符串就可以了。当然接收数据直接打印出来的是 ArrayBuffer 类型的数据,可以用 JSON.parse()
转换回json对象
demo
将上面代码进行修改
- server.js
ws.send(JSON.stringify(data)) //发送数据前先转换
- client.js
console.log(JSON.parse(message)) //打印数据前先转换