首页 > 解决方案 > 如何处理 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();
        });
      }

开头好像有个“-”,但是不知道怎么去掉。

标签: javascriptwebsocketbase64

解决方案


推荐阅读