我厂产品中有个需求,要用 WebSocket 接收很长的一段文本。生产环境中发现,有些内容发送时会失败,经查,是服务器端进行文本转换时,特殊字符处理存在一些问题。于是决定改为直接发送二进制流,我这边也要修改。
开始以为要处理 ArrayBuffer,人工转换,后来经过一些摸索找到方法,记录一下。
const socket = new WebSocket('wss://mydomain.com/path/to/api');
socket.binaryType = 'arraybuffer';
socket.onmessage = event => {
const decodedString = new TextDecoder('utf-8').decode(event.data);
// go on
}
其实很简单,主要用到原生类 TextDecoder,并且配置 WebSocket 以二进制文档流的方式来处理返回的数据。
欢迎吐槽,共同进步