我發現safari 5.1使用的是websocket的草稿版本,我認爲它是hybi-00。我怎樣才能發送二進制數據通過websocket safari5
我試圖用下面的代碼發送二進制數據:
var ab = new ArrayBuffer(64);
var dv = new DataView(ab);
dv.setUint32(0, 1);
websock.send(ab);
但是服務器接收到包含一個文本消息「[對象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中的二進制數據?
代碼看起來很好。顯然Safari5根本不支持二進制消息?你可以propably測試發送一個ArrayBufferView(像Uint8Array)而不是ArrayBuffer。然而,標準的webkit實現這個重載發送甚至比發送(ArrayBuffer)更晚,因此我認爲它也不起作用。 – Matthias247
我不得不放棄,我在safari5上花了太多時間。我的網絡應用程序將不支持safari5 ... – fatmck