如何在safari5中通过websocket发送二进制数据
我发现Safari5.1使用的是websocket的草稿版本,我认为它是hybi-00 我正在尝试使用以下代码发送二进制数据:如何在safari5中通过websocket发送二进制数据,safari,binary,websocket,Safari,Binary,Websocket,我发现Safari5.1使用的是websocket的草稿版本,我认为它是hybi-00 我正在尝试使用以下代码发送二进制数据: var ab = new ArrayBuffer(64); var dv = new DataView(ab); dv.setUint32(0, 1); websock.send(ab); 但是服务器接收到一条包含“[object ArrayBuffer]”的文本消息,而不是二进制消息。服务器接收的数据的十六进制转储为: 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中发送二进制数据呢?hybi 00/hixie 76 WebSocket规范草案没有包括最终版本中的许多功能,包括二进制消息。不幸的是,在hybi00浏览器中无法支持本机二进制websocket消息。我不确定,但您可以尝试:
websock.send(ab.buffer) 代码看起来不错。可能Safari5根本不支持二进制消息?您可以测试发送ArrayBufferView(如Uint8Array)而不是ArrayBuffer。然而,标准webkit甚至比send(ArrayBuffer)晚了很多时间才为send实现这个重载,因此我认为它也不会工作。我不得不放弃,我在safari5上花了太多时间。我的web应用程序将不支持safari5。。。