作者:毛毛-刘庆 | 来源:互联网 | 2023-09-02 10:15
letstrJSON.stringify(obj);console.log(str)varbuffnewTextEncoder().encode(str);websocket.se
let str = JSON.stringify(obj);
console.log(str)
var buff = new TextEncoder().encode(str);
websocket.send(codeBuffer(buff));
console.log("发送数据")
把字符串转成二进制数据流 发送
接受到数据的时候需要用Uint8Array来接受,服务端发回来的是一个
ArrayBuffer,用下面的代码接
var view = new Uint8Array(buffer);
var data = codeBuffer(view);
let x = new TextDecoder().decode(data);
console.log(x)
这个Uint8Array有很多种(Uint8Array Uint16Array Uint32Array),这个Uint8Array也可以用Int8Array Int16Array Int32Array 来代替效果一样的看需求.
本需求主要用在自己项目里面
websocket = new WebSocket(wsUrl);
websocket.Onopen= function (evt) {
//发送数据前要加密
websocket.binaryType = "arraybuffer";
let obj = {
"C2S_TXLogin": {
"ChanName": "",
"Platform": "h5",
"Channel": "",
"Uin": "12345678"
}
}
let str = JSON.stringify(obj);
console.log(str)
var buff = new TextEncoder().encode(str);
websocket.send(codeBuffer(buff));
console.log("发送数据")
};
websocket.Onclose= function (evt) {
console.log("关闭socket")
console.log(evt)
};
websocket.Onmessage= function (evt) {
var buffer = evt.data;
console.log("接受数据0")
console.log(buffer)
if (evt.data instanceof ArrayBuffer) {
var view = new Uint8Array(buffer);
var data = codeBuffer(view);
let x = new TextDecoder().decode(data);
console.log(x)
}
};
websocket.Onerror= function (evt) {
console.log("错误")
};