クライアントからメトリックを書き込む必要がある単純なノード アプリがあります。クライアントは、python の zlib モジュールで圧縮された json 形式でメトリクスを送信します。エクスプレス bodyParse が実行される前に、リクエスト ポストを解凍するミドルウェアを追加しようとしています。
私のミドルウェアは、デフォルトで Express によって提供されるものです。
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
});
データを取得して解凍する単純なミドルウェアを追加しようとしました。
app.use(function(req, res, next) {
var data = '';
req.addListener("data", function(chunk) {
data += chunk;
});
req.addListener("end", function() {
zlib.inflate(data, function(err, buffer) {
if (!err) {
req.body = buffer;
next();
} else {
next(err);
}
});
});
});
問題は zlib.inflate にあり、次のエラーが発生します。
Error: incorrect header check
データは python の zlib モジュールで圧縮されています。
zlib.compress(jsonString)
しかし、解凍、膨張、ガンジップのどちらも機能しないようです。