2014-02-05 76 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); 
相关问题