Я сделал это с zlib, но не с GZIP.
Во-первых, у меня есть эта функция на стороне клиента ....
function compressBody(body) {
return new Promise( function( resolve, reject ) {
zlib.deflate(body, (err, buffer) => {
if(err){
console.log("Error Zipping");
reject(err);
}
console.log("Zipped");
resolve(buffer);
});
});
}
Для вызова функции ....
let compressedBody = await compressBody(JSON.stringify(body));
Затем я могу назначить этот сжатый переменный тела вызову webervice ...
var promise = fetch(ServiceUrl, {method: 'POST', headers:headers, body:compressedBody}).then((result) => result.json() );
Затем вам потребуется изменить код на стороне сервера, чтобы принимать сжатое тело. Я использовал Express и сделал следующее ...
var BodyParser = require('body-parser');
require('body-parser-zlib')(BodyParser);
var app = express();
// Other code....
app.use(BodyParser.zlib()); // support json encoded bodies
app.use(BodyParser.json({"inflate": true})); // support json encoded bodies