Ответ 1
Вы на полпути там. Я могу от всей души согласиться с тем, что документация не совсем поняла, как это сделать;
const zlib = require('zlib');
const http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'});
const text = "Hello World!";
const buf = new Buffer(text, 'utf-8'); // Choose encoding for the string.
zlib.gzip(buf, function (_, result) { // The callback will give you the
res.end(result); // result, so just send it.
});
}).listen(80);
Упрощением было бы не использовать Buffer
;
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'});
const text = "Hello World!";
zlib.gzip(text, function (_, result) { // The callback will give you the
res.end(result); // result, so just send it.
});
}).listen(80);
... и, похоже, по умолчанию отправляет UTF-8. Тем не менее, я лично предпочитаю идти в безопасности, когда нет поведения по умолчанию, которое имеет больше смысла, чем другие, и я не могу сразу подтвердить это документацией.
Точно так же, если вам нужно вместо этого передать объект JSON:
const data = {'hello':'swateek!'}
res.writeHead(200, {'Content-Type': 'application/json', 'Content-Encoding': 'gzip'});
const buf = new Buffer(JSON.stringify(data), 'utf-8');
zlib.gzip(buf, function (_, result) {
res.end(result);
});