feat(assist): uWS message compression support

This commit is contained in:
Taha Yassine Kraiem 2023-04-05 16:51:49 +01:00
parent d12be24879
commit dda653b3db
2 changed files with 45 additions and 3 deletions

View file

@ -20,7 +20,8 @@ const {
extractProjectKeyFromRequest,
extractSessionIdFromRequest,
extractPayloadFromRequest,
getCompressionConfig
getCompressionConfig,
getUWSCompressionConfig
} = require('../utils/helper-ee');
const wsRouter = express.Router();
@ -46,7 +47,8 @@ const createSocketIOServer = function (server, prefix) {
methods: ["GET", "POST", "PUT"]
},
path: (prefix ? prefix : '') + '/socket',
perMessageDeflate: getCompressionConfig()
// perMessageDeflate: getCompressionConfig(),
compression: getUWSCompressionConfig()
});
io.attachApp(server);
}

View file

@ -1,3 +1,4 @@
const uWS = require("uWebSockets.js");
const helper = require('./helper');
let debug = process.env.debug === "1";
const getBodyFromUWSResponse = async function (res) {
@ -130,9 +131,48 @@ const getCompressionConfig = function () {
}
return perMessageDeflate;
}
const getUWSCompressionConfig = function () {
let compression = uWS.DISABLED;
if (process.env.UWS_COMPRESSION_LEVEL) {
switch (process.env.UWS_COMPRESSION_LEVEL) {
case 'SHARED_C':
compression = uWS.SHARED_COMPRESSOR;
break;
case 'D_C_3':
compression = uWS.DEDICATED_COMPRESSOR_3KB;
break;
case 'D_C_4':
compression = uWS.DEDICATED_COMPRESSOR_4KB;
break;
case 'D_C_8':
compression = uWS.DEDICATED_COMPRESSOR_8KB;
break;
case 'D_C_16':
compression = uWS.DEDICATED_COMPRESSOR_16KB;
break;
case 'D_C_32':
compression = uWS.DEDICATED_COMPRESSOR_32KB;
break;
case 'D_C_64':
compression = uWS.DEDICATED_COMPRESSOR_64KB;
break;
case 'D_C_128':
compression = uWS.DEDICATED_COMPRESSOR_128KB;
break;
case 'D_C_256':
compression = uWS.DEDICATED_COMPRESSOR_256KB;
break;
}
console.log(`WS UWS compression level: ${process.env.UWS_COMPRESSION_LEVEL} => ${compression}`);
} else {
console.log(`WS UWS compression level: disabled`);
}
return compression;
}
module.exports = {
extractProjectKeyFromRequest,
extractSessionIdFromRequest,
extractPayloadFromRequest,
getCompressionConfig
getCompressionConfig,
getUWSCompressionConfig
};