如何为node.js服务器gzip http请求post(客户端)数据

时间:2015-06-02 09:19:31

标签: node.js http gzip

我已经实现了node.js服务器应用程序,它接受来自客户端的post数据(long json string)。有没有办法可以在浏览器端压缩帖子数据并将其解压缩到node.js中?

我特别想要gzip请求而不是响应。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:https://github.com/sapienlab/jsonpack

示例客户端代码:

<script src="jsonpack.js" />
<script>
 var BIG_JSON = {.....};
 var packed = jsonpack.pack(BIG_JSON);
 $.post('path_to_server',packed);
</script>

示例Nodejs代码:

var jsonpack = require('jsonpack/main');
app.on('/packed_data',function(req,res){
  try{
     jsonpack.unpack(req.data);
  }catch(e){
   //not good packed data. 
 }

})

这是一个示例代码,当然我不知道您使用的框架或库,但您可以看到如何实现它。 无论如何要小心这一点,因为压缩和解压缩数据总是一个沉重的CPU绑定任务。如果你有几兆字节的数据,你不想让你的用户来自手机,平板电脑等......来完成这项任务!

答案 1 :(得分:0)

检查https://jsfiddle.net/gynz82tg/ 在获得base64编码的请求字符串后,在nodejs中解压缩。

&#13;
&#13;
var jsonStr = JSON.stringify({
  name: "JiangYD"
})
$('#origin').text(jsonStr);
var zip = new JSZip();
zip.file("data", jsonStr);
var content = zip.generate();
$('#compressed').text(content);

zip = new JSZip(content, {base64:true});
$('#decompressed').text(zip.file("data").asText());
&#13;
<script src="https://raw.githubusercontent.com/Stuk/jszip/master/dist/jszip.js"></script>
<div id='origin'></div>
<div id='compressed'></div>
<div id='decompressed'></div>
&#13;
&#13;
&#13;