2016-07-01 17 views
0

我正在使用ws模塊作爲nodejs中的WebSocket服務器。在服務器端,我有一個Uint8Array,我使用的代碼非常喜歡這個發送到客戶端,作爲ArrayBuffer發送的數據正在接收爲Blob

var data = new Uint8Array([1, 2, 3, 4, 5]); 
clientSock.send(data, { 
    binary: true 
}); 

然而,在客戶端(包括最新的Chrome和Firefox),該數據被收到的Blob對象。我知道我可以使用FileReader API將其處理回Uint8Array。但是我想首先將它作爲ArrayBuffer接收。我怎樣才能做到這一點?

回答

1

正當我寫完這個問題時,我碰巧找到了自己的答案。根據MDN documentation for WebSocket,有一個binaryType屬性必須設置爲"blob""arraybuffer",並確定接收數據的格式。通過改變客戶端代碼像這樣,

var sock = new WebSocket("<the server address>"); 
sock.binaryType = "arraybuffer"; 

現在從服務器中的所有二進制數據被接收爲ArrayBuffers,符合市場預期。