【发布时间】:2016-09-16 18:40:12
【问题描述】:
FireFox 46.0.1:我正在使用第 3 方 (easyrtc) 软件在对等方之间发送 15KB 的 Float32Arrays 块。 Easyrtc 坚持数据是 JSON-able。不幸的是,JSON.stringify 产生的字符串是原始数据的两倍多:16384 字节的数据变成了长度为 35755 的字符串。下面是我的测试代码,后面是控制台输出。如果我能做些什么来减少字符串化的大小怎么办?有没有办法只发送值(没有键)?我可以使用“replacer”参数只发送值吗?如果可以,我不需要在接收端的相应 JSON.parse 上使用替换器吗?
var g_testBufferNBytes = 4096 * 4;
var g_testBuffer = new ArrayBuffer(g_testBufferNBytes);
var g_testBufferView = new Float32Array(g_testBuffer);
console.log("array byte length " + g_testBuffer.byteLength);
console.log("view byte length " + g_testBufferView.byteLength);
var j = JSON.stringify(g_testBufferView);
console.log("j length " + j.length);
var newBuf = JSON.parse(j);
console.log("newBuf length " + Object.keys(newBuf).length);
控制台: 数组字节长度 16384 查看字节长度 16384 j 长度 35755 newBuf 长度 4096
【问题讨论】:
-
您到底想做什么?您正在使用的库似乎有一种直接发送二进制数据的方法。 demo.easyrtc.com/demos/demo_data_channel_filesharing.html
标签: javascript stringify