0

我发现 safari 5.1 正在使用 websocket 的草稿版本,我认为它是 hybi-00。

我正在尝试使用以下代码发送二进制数据:

    var ab = new ArrayBuffer(64);
    var dv = new DataView(ab);
    dv.setUint32(0, 1);
    websock.send(ab);

但是服务器收到了一条包含“[object ArrayBuffer]”的文本消息,而不是二进制消息。服务器接收到的数据的十六进制转储是:

    00 5b 6f 62 6a 65 63 74 20 41 72 72 61 79 42 75     .[object.ArrayBu
    66 66 65 72 5d ff -- -- -- -- -- -- -- -- -- --     ffer].

显然,javascript 将 ArrayBuffer 对象转换为字符串,并将字符串发送到服务器。

那么,如何在 ArrayBuffer 中发送二进制数据?

4

2 回答 2

1

WebSockets 的 hybi 00 / hixie 76 草案规范不包括最终版本中的许多功能,包括二进制消息。不幸的是,在 hybi00 浏览器中无法支持原生二进制 websocket 消息。

于 2013-10-18T11:13:35.757 回答
0

我不确定,但您可以尝试:

websock.send (ab.buffer);

于 2013-11-19T15:56:02.063 回答