2013-10-16 75 views
0

我發現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中的二進制數據?

+0

代碼看起來很好。顯然Safari5根本不支持二進制消息?你可以propably測試發送一個ArrayBufferView(像Uint8Array)而不是ArrayBuffer。然而,標準的webkit實現這個重載發送甚至比發送(ArrayBuffer)更晚,因此我認爲它也不起作用。 – Matthias247

+0

我不得不放棄,我在safari5上花了太多時間。我的網絡應用程序將不支持safari5 ... – fatmck

回答

1

針對WebSockets的hybi 00/hixie 76草案規範不包含最終版本中的許多功能,包括二進制消息。不幸的是,在hybi00瀏覽器中無法支持本地二進制websocket消息。

0

我不知道,但你可以嘗試:

websock.send(ab.buffer);

相關問題