javascript - 从通过 websocket 接收的 ArrayBuffer 读取字符串

标签 javascript python websocket blob arraybuffer

我正在使用 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 中的文件内容是一长行基于文本的 float ,类似于 .csv,因此如果我可以将它们编码为实际的二进制数组,那就更好了!

最佳答案

试试这个 - 返回以数组缓冲区的形式接收消息,并应用类似的内容来创建字符串:

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

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

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

关于javascript - 从通过 websocket 接收的 ArrayBuffer 读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37558695/

相关文章:

javascript - 如何在 RoyalSlider 中设置中心图像宽度?

python - 如何使用 break 语句对 Python for 循环使用多处理?

Erlang 和 websockets

java - 一些 Spring WebSocket session 永远不会断开连接

javascript - 在我的示例 react 视频通话应用程序中关闭/停止浏览器摄像头

javascript - 如何将点击处理程序添加到 gwt 可视化图表的 x-label 元素

javascript - 子弹出窗口显示在父弹出窗口顶部

Python从elasticsearch中获取 float 作为 float 数组

c# - UnicodeCategory.Other正则表达式的字母范围

python - Django ModelForm 单元测试 : Populate fields with custom data