在 WebSocket 中处理二进制文本
我厂产品中有个需求,要用 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 以二进制文档流的方式来处理返回的数据。
相关文章
解决 Firefox 下的 race 问题
我厂有几个产品,需要从后端获取大量的信息,为了让用户能够近乎实时的看到这些信息,大部分数据都是通过 WebSo […]
2019-11-012 分钟
WebSocket.onerror 没有错误描述
用 WebSocket 时遇到一个问题:有时候连接出错,我希望把错误描述报告给用户,方便他们排除。但是尝试了好 […]
2018-10-161 分钟
\n 与 \r 的区别
所以 \r 换行之后,光标移到此行的 0 位,继续输出,于是新的一行会替代旧的一行,形成的效果就是进度条在更新;而 \n 则会另起一行,形成多行输出的效果。
2018-08-253 分钟


