【问题标题】:Read string from ArrayBuffer received via websocket从通过 websocket 接收的 ArrayBuffer 中读取字符串
【发布时间】:2016-09-30 05:35:52
【问题描述】:

我正在使用 python SimpleWebSocketServer,修改后的 SimpleExample.py 和 Chrome。

当我将字符串从浏览器发送到 python 时,一切正常,但是当我将字符串从 python 发送到浏览器时,我不知道如何将接收到的 ArrayBuffer(或 Blob,如果配置)转换为 javascript字符串。

Python 代码:

def handleConnected(self):
    with open("roads.txt") as roadsfile:
        content = "" + roadsfile.read()
        self.sendMessage(content)

浏览器代码:

    function doConnect() {
        websocket = new WebSocket("ws://localhost:8000/");
        websocket.binaryType = 'arraybuffer';
        websocket.onmessage = function(event) { onMessage(event) };
    }

    function onMessage(event) {
        console.log(event.data);
    }

记录的只是ArrayBuffer{},我猜应该是空的。

我不知道如何处理这个 ArrayBuffer,也不知道如何检查它的有效性。

顺便说一句,roads.txt 的文件内容是一长行基于文本的浮点数,类似于 .csv,所以如果我可以将它们编码为实际的二进制数组,那就更好了!

【问题讨论】:

标签: javascript python websocket blob arraybuffer


【解决方案1】:

试试这个——返回以数组缓冲区的形式接收消息,并应用这样的东西来创建一个字符串:

function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint16Array(buf));
}

function onMessage(event) {
    console.log(ab2str(event.data));
}

这假设您正在发送一个 utf-8 编码的字符串。

【讨论】:

  • 我试过了,但现在控制台日志是空的(空白)。
猜你喜欢
  • 2013-02-09
  • 2021-12-08
  • 2017-01-03
  • 2015-03-07
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多