簡體   English   中英

Node.js / Javascript相當於Java的Deflater類

[英]Node.js/Javascript Equivalent of Java's Deflater class

我有一個使用Inflater的Java后端。 我希望通過Node.js向它提供數據。

是否有與Deflater類相同的東西?

編輯:我應該澄清一點。 我嘗試使用https://github.com/dankogai/js-deflate ,然后對結果進行base64編碼並將其傳遞給一個非常簡單的Java程序,base64對其進行解碼並嘗試對其進行充氣(創建后端的簡單模擬) ,但我一直得到一個例外:

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后端。

你可以玩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。 我認為這可能是一個良好的開端。

您可以使用基於Deflator / Inflator AFAIK的GZIPInput / OutputStream,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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM