2014-02-05 183 views
2

我需要在單個Web套接字消息中發送具有blob數據的消息類型。WebSockets:單個發送消息中的字符串和Blob

var socket = new WebSocket('ws://somedomain.com/data'); 

// just pseudocode 
// I know that only DOMString|ArrayBuffer|Blob types are supported 
socket.send({ type: 'someMessageType', data: someBlobData }); 

什麼是最好的辦法呢?首先想到的是使用JSON.stringify。但我認爲它大大增加了消息長度。也許有更好的方法?

+0

你能做的最好是發送消息的二進制數據。 –

+0

@KurtPattyn是的,我做了一項研究,現在我認爲你是對的。我能做的最好的是將所有數據轉換爲BLOB,將其發送到服務器,然後將BLOB轉換回原始數據。現在的問題是如何將BLOB數據轉換回服務器上的原始數據(至少對於NodeJS服務器)?我沒有找到任何blob轉換器庫。也許是時候寫我自己的了。 – alexpods

回答

0

您可以使用FileReader將您的blob轉換爲base64字符串。這就是你如何在Dart中完成的。對不起,我不知道JS。

final FileReader reader = new FileReader(); 
reader.onLoadEnd.listen((e) { 
    print(reader.result); 
    socket.send({ type: 'someMessageType', data: reader.result }); 
}); 
reader.readAsDataUrl(file); 
相關問題