javascript - 如何处理 websocket Base64 内容
问题描述
我正在使用 Javascript 从远程服务器读取 websockets 二进制或文本数据,但这条消息给我带来了麻烦,我无法加载数据:
1 �������������������������-{"type":"auth","auth":"00000000000000000000"}
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
这发生在self.protocolVersion === 1 which means Base64
当我打印传入消息的值时,我得到:
self.empuja = function(msgs) {
for (var i = 0; i < msgs.length; i++) {
if (self.convertir(msgs[i].msg)) {
var blob = new Blob([msgs[i].msg]);
var reader = new FileReader();
reader.addEventListener("loadend", function() {
if (self.protocolVersion === RAWBINARY ) {
msgs[i].msg = [btoa(reader.result)];
} else if (self.protocolVersion === BASE64) {
console.log(self.protocolVersion, reader.result)
msgs[i].msg = [btoa(reader.result)];
} else {
msgs[i].msg = [reader.result];
}
self.empuja(msgs);
});
if (self.protocolVersion === RAWBINARY) {
reader.readAsBinaryString(blob);
} else {
reader.readAsText(blob);
}
return;
}
}
self.xhr('data', msgs, null, function() {
self.pushing = false;
self.push();
});
}
开头好像有个“-”,但是不知道怎么去掉。
解决方案
推荐阅读
- html - 出于某种原因,我的媒体查询切换了我原来的移动优先设计
- java - JProfiler 11 离线分析:快照的计时器触发器不起作用
- visual-studio-code - 将 tfs 添加到 VSCode 时找不到 TF 可执行文件
- animation - 部分 SVG 在悬停时的动画变化
- java - 错误附加程序包含无效元素或属性“NoSql”
- azure - 我们如何向一个本地数据网关添加多个订阅?
- airflow - 使用“with dag as DAG(...)”子句创建 DAG 是否有好处
- reactjs - react-admin 展开 Unknown dataProvider 功能:getOne
- sql - 在将插入脚本生成为动态查询时,即使列是 nvarchar,此 N 也不会得到前缀
- google-sheets - 如何计算谷歌电子表格中的对称差异