From 06b3195dab26ba506bc220a2e888262d5b1a383a Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Thu, 6 Apr 2023 14:27:43 +0100 Subject: [PATCH] feat(assist): decompression support --- ee/assist/servers/websocket.js | 4 +++- ee/assist/utils/helper-ee.js | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/ee/assist/servers/websocket.js b/ee/assist/servers/websocket.js index 335a09669..6404792bb 100644 --- a/ee/assist/servers/websocket.js +++ b/ee/assist/servers/websocket.js @@ -22,6 +22,7 @@ const { extractPayloadFromRequest, getCompressionConfig, getUWSCompressionConfig, + getUWSDecompressionConfig, getAvailableRooms } = require('../utils/helper-ee'); const wsRouter = express.Router(); @@ -49,7 +50,8 @@ const createSocketIOServer = function (server, prefix) { }, path: (prefix ? prefix : '') + '/socket', // perMessageDeflate: getCompressionConfig(), - compression: getUWSCompressionConfig() + compression: getUWSCompressionConfig(), + decompression: getUWSDecompressionConfig() }); io.attachApp(server); } diff --git a/ee/assist/utils/helper-ee.js b/ee/assist/utils/helper-ee.js index 0b6ad8156..e5a2d9b38 100644 --- a/ee/assist/utils/helper-ee.js +++ b/ee/assist/utils/helper-ee.js @@ -169,6 +169,38 @@ const getUWSCompressionConfig = function () { } return compression; } +const getUWSDecompressionConfig = function () { + let compression = uWS.DISABLED; + if (process.env.UWS_DECOMPRESSION_LEVEL) { + switch (process.env.UWS_COMPRESSION_LEVEL) { + case 'SHARED_D': + compression = uWS.SHARED_DECOMPRESSOR; + break; + case 'D_D_1': + compression = uWS.DEDICATED_DECOMPRESSOR_1KB; + break; + case 'D_D_2': + compression = uWS.DEDICATED_DECOMPRESSOR_2KB; + break; + case 'D_D_4': + compression = uWS.DEDICATED_DECOMPRESSOR_4KB; + break; + case 'D_D_8': + compression = uWS.DEDICATED_DECOMPRESSOR_8KB; + break; + case 'D_D_16': + compression = uWS.DEDICATED_DECOMPRESSOR_16KB; + break; + case 'D_D_32': + compression = uWS.DEDICATED_DECOMPRESSOR_32KB; + break; + } + console.log(`WS UWS compression level: ${process.env.UWS_COMPRESSION_LEVEL} => ${compression}`); + } else { + console.log(`WS UWS compression level: disabled`); + } + return compression; +} const getAvailableRooms = async function (io) { if (process.env.redis === "true") { return io.of('/').adapter.allRooms(); @@ -182,5 +214,6 @@ module.exports = { extractPayloadFromRequest, getCompressionConfig, getUWSCompressionConfig, + getUWSDecompressionConfig, getAvailableRooms }; \ No newline at end of file