From 5ad273601eb66c7b318542f87026837bf9dddd21 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Wed, 30 Dec 2020 09:04:16 +0100 Subject: [PATCH] feat: disable perMessageDeflate by default The WebSocket permessage-deflate extension, while useful is some cases, adds some extra memory overhead for each WebSocket connection, and results in huge memory usage in production deployments. It will now be disabled by default. Backported from master: https://github.com/socketio/engine.io/commit/078527a384b70dc46d99083fa218be5d45213e51 --- README.md | 2 +- lib/server.js | 2 +- test/server.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6e1854ff9..8009d6808 100644 --- a/README.md +++ b/README.md @@ -239,7 +239,7 @@ to a single process. - `allowUpgrades` (`Boolean`): whether to allow transport upgrades (`true`) - `perMessageDeflate` (`Object|Boolean`): parameters of the WebSocket permessage-deflate extension - (see [ws module](https://github.com/einaros/ws) api docs). Set to `false` to disable. (`true`) + (see [ws module](https://github.com/einaros/ws) api docs). Set to `true` to enable. (`false`) - `threshold` (`Number`): data is compressed only if the byte size is above this value (`1024`) - `httpCompression` (`Object|Boolean`): parameters of the http compression for the polling transports (see [zlib](http://nodejs.org/api/zlib.html#zlib_options) api docs). Set to `false` to disable. (`true`) diff --git a/lib/server.js b/lib/server.js index 6d998e8fb..e64c6293a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -47,7 +47,7 @@ function Server (opts) { this.cookie = false !== opts.cookie ? (opts.cookie || 'io') : false; this.cookiePath = false !== opts.cookiePath ? (opts.cookiePath || '/') : false; this.cookieHttpOnly = false !== opts.cookieHttpOnly; - this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || true) : false; + this.perMessageDeflate = opts.perMessageDeflate || false; this.httpCompression = false !== opts.httpCompression ? (opts.httpCompression || {}) : false; this.initialPacket = opts.initialPacket; diff --git a/test/server.js b/test/server.js index 40b22244f..79c61bf46 100644 --- a/test/server.js +++ b/test/server.js @@ -2503,7 +2503,7 @@ describe('server', function () { }); it('should not compress when the byte size is below threshold', function (done) { - var engine = listen({ transports: ['websocket'] }, function (port) { + var engine = listen({ transports: ['websocket'], perMessageDeflate: true }, function (port) { engine.on('connection', function (conn) { var socket = conn.transport.socket; var send = socket.send;