2013-03-14 3 views
1

У меня есть сервер в nodejs, написанный с помощью connect. Я просматриваю некоторые данные как json. Я должен сжать данные перед отправкой. Я использовал функцию сжатия в подключении, но я не уверен, как проверить данные, если они сжаты или нет. Ниже приводится мой код:Сжатие json в nodejs

var connect = require('connect') 
, http = require('http'); 

var app = connect() 

.use(connect.compress(console.log("I have compressed data"))) 

.use(function(req, res){ 
res.setHeader('Content-Type', 'application/json'); 
//res.end("store_id: 'S3000981'"); 

res.end('{"store_id": "S3000990"}'); 
}); 
http.createServer(app).listen(3000); 

Любая идея относительно этого будет действительно полезна.

ответ

1

запустить свой сервер, и попробуйте следующее:

curl -H 'Accept-Encoding: gzip' -v localhost:3000 

Если вы видите следующее появится, ответ сжат:

< Content-Encoding: gzip 

Кроме того, это не то, что вы думаете, что будет , и могут иметь побочные эффекты:

.use(connect.compress(console.log("I have compressed data"))) 

Если вы хотите зарегистрировать сообщение со своего сервера, когда данные ответа являются compre ssed, попробуйте это вместо:

.use(connect.compress()) 
.use(function(req, res, next) { 
    res.on('header', function() { 
    var encoding = res.getHeader('Content-Encoding') || ''; 
    if (encoding.indexOf('gzip') != -1 || encoding.indexOf('deflate') != -1) 
    { 
     console.log("I have compressed data"); 
    } 
    }); 
    next(); 
}) 
+1

Спасибо, сработало :) –