通过websocket发送文本和二进制文件

时间:2016-06-24 22:01:29

标签: javascript websocket

有没有办法通过websocket在一个请求中发送文本和二进制文件?例如:文件名(文本)和文件内容(二进制)

我可以像字符串一样发送它们:

JSON.stringify({filename: "test.dat", filecontent: data});

但它比仅将文件内容发送为二进制(arraybuffer)慢很多。

1 个答案:

答案 0 :(得分:3)

请记住二进制文件只是编码数据。这不是一个JavaScript问题,而是一个编码问题。我就是这样做的。

在请求开头留出32位(表示一个整数),以指定test.dat的位长度。然后将其与您的两个数据源结合使用。您的有效负载将如下所示:

  

TEXT_LENGTH + TEST.DAT作为二进制+ FILECONTENT作为二进制文件

然后将数据作为数组缓冲区返回。使用

textLengthBits = parseInt(arrBuffer.slice(0,32), 2);

获取文本的长度。然后再切片,

textBits = arrBuffer.slice(32, 32 + textLengthBits)

获取文字。其余的位是你的文件。

fileBits = arrBuffer.slice(32 + textLengthBits);