Node.js / Javascript等同于Java的Deflater类

我有一个使用Inflater的Java后端。 我希望通过Node.js将数据提供给它。

是否有任何相当于Deflater类?

编辑:我应该澄清一点。 我已经尝试使用https://github.com/dankogai/js-deflate ,然后base64编码的结果,并将其传递给一个非常简单的Java程序,base64解码它,并试图夸大它(创build一个简单的后台仿真) ,但我不断得到一个例外:

java.util.zip.DataFormatException: unknown compression method at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Unknown Source) at java.util.zip.Inflater.inflate(Unknown Source) 

而且我知道Base64编码过程在两端都能正常工作。

我也应该注意到,我不能改变Java后端。

       

网上收集的解决方案 "Node.js / Javascript等同于Java的Deflater类"

你可以玩https://github.com/waveto/node-compress

 var compress=require("./compress"); var sys=require("sys"); var posix=require("posix"); // Create gzip stream var gzip=new compress.Gzip; gzip.init(); // Pump data to be compressed var gzdata1 = gzip.deflate("My data that needs ", "binary"); sys.puts("Compressed size : "+gzdata1.length); var gzdata2 = gzip.deflate("to be compressed. 01234567890.", "binary"); sys.puts("Compressed size : "+gzdata2.length); var gzdata3=gzip.end(); sys.puts("Last bit : "+gzdata3.length); // Take the output stream, and chop it up into two var gzdata = gzdata1+gzdata2+gzdata3; sys.puts("Total compressed size : "+gzdata.length); var d1 = gzdata.substr(0, 25); var d2 = gzdata.substr(25); // Create gunzip stream to decode these var gunzip = new compress.Gunzip; gunzip.init(); var data1 = gunzip.inflate(d1, "binary"); var data2 = gunzip.inflate(d2, "binary"); var data3 = gunzip.end(); sys.puts(data1+data2+data3); 

为此工作正常,但有一些问题,因为我玩node_pcap。 我认为这可能是一个很好的开始看。

您可以使用GZIPInput / OutputStream代替基于Deflator / Inflator AFAIK,Inflator / Deflator是Java特定的。

最后想出来了。 您可以在Node.js中使用zlib库来执行此操作。 例如:

 var zip = require('zlib'); zip.createDeflate({ level: zip.Z_DEFAULT_COMPRESSION, windowBits: zip.MAX_WBITS }); 

要么

 zip.deflate(buf,callback);