Skip to content

Releases: socketio/engine.io

5.2.1

11 Jan 15:43
d36199c
Compare
Choose a tag to compare

⚠️ This release contains an important security fix ⚠️

A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

RangeError: Invalid WebSocket frame: RSV2 and RSV3 must be clear
at Receiver.getInfo (/.../node_modules/ws/lib/receiver.js:176:14)
at Receiver.startLoop (/.../node_modules/ws/lib/receiver.js:136:22)
at Receiver._write (/.../node_modules/ws/lib/receiver.js:83:10)
at writeOrBuffer (internal/streams/writable.js:358:12)

This bug was introduced by this commit, included in engine.io@4.0.0, so previous releases are not impacted.

Thanks to Marcus Wejderot from Mevisio for the responsible disclosure.

Bug Fixes

  • properly handle invalid data sent by a malicious websocket client (66f889f)

Links

4.1.2

11 Jan 15:36
c6315af
Compare
Choose a tag to compare

⚠️ This release contains an important security fix ⚠️

A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

RangeError: Invalid WebSocket frame: RSV2 and RSV3 must be clear
at Receiver.getInfo (/.../node_modules/ws/lib/receiver.js:176:14)
at Receiver.startLoop (/.../node_modules/ws/lib/receiver.js:136:22)
at Receiver._write (/.../node_modules/ws/lib/receiver.js:83:10)
at writeOrBuffer (internal/streams/writable.js:358:12)

This bug was introduced by this commit, included in engine.io@4.0.0, so previous releases are not impacted.

Thanks to Marcus Wejderot from Mevisio for the responsible disclosure.

Bug Fixes

  • properly handle invalid data sent by a malicious websocket client (a70800d)

Links

6.1.0

08 Nov 07:46
4c306af
Compare
Choose a tag to compare

This release introduces a new engine implementation based on uWebSockets.js, a high performance HTTP/WebSocket server which can be used as an alternative to the default Node.js HTTP server.

Usage:

const { App } = require("uWebSockets.js");
const { uServer } = require("engine.io");

const app = new App();
const server = new uServer();

server.attach(app);

app.listen(3000, () => {});

Feedback is welcome! 👼

Bug Fixes

  • fix payload encoding for v3 clients (ed50fc3)

Features

  • add an implementation based on uWebSockets.js (271e2df)

Performance Improvements

Links

6.0.1

08 Nov 07:44
948a86e
Compare
Choose a tag to compare

Bug Fixes

  • fix payload encoding for v3 clients (3f42262)

Links

6.0.0

08 Oct 14:16
fe5d97f
Compare
Choose a tag to compare

The codebase was migrated to TypeScript (c0d6eaa)

An ES module wrapper was also added (401f4b6).

Please note that the communication protocol was not updated, so a v5 client will be able to reach a v6 server (and vice-versa).

Reference: https://github.com/socketio/engine.io-protocol

BREAKING CHANGES

  • the default export was removed, so the following code won't work anymore:
const eioServer = require("engine.io")(httpServer);

Please use this instead:

const { Server } = require("engine.io");
const eioServer = new Server(httpServer);

Links

5.2.0

29 Aug 06:45
313ca50
Compare
Choose a tag to compare

No change on the server-side, this matches the client release.

Links

5.1.1

16 May 22:41
733ad4d
Compare
Choose a tag to compare

Bug Fixes

  • properly close the websocket connection upon handshake error (4360686)

Links

5.1.0

04 May 08:48
8c9bd92
Compare
Choose a tag to compare

Features

  • add a "connection_error" event (7096e98)
  • add the "initial_headers" and "headers" events (2527543)

Performance Improvements

  • websocket: add a "wsPreEncoded" writing option (7706b12)
  • websocket: fix write back-pressure (#618) (ad5306a)

Links

5.0.0

10 Mar 09:29
887ba06
Compare
Choose a tag to compare

This major bump is due to a breaking change at the API level (see below).

Apart from this, the Engine.IO protocol was not updated, so a v4 client will be able to reach a v5 server, and vice-versa. Besides, the compatibility mode (allowEIO3: true) is still available between an Engine.IO v3 client and an Engine.IO v5 server.

Bug Fixes

Features

  • increase the default value of pingTimeout (5a7fa13)
  • remove dynamic require() with wsEngine (edb7343)

BREAKING CHANGES

  • the syntax of the "wsEngine" option is updated

Before:

const eioServer = require("engine.io")(httpServer, {
  wsEngine: "eiows"
});

After:

const eioServer = require("engine.io")(httpServer, {
  wsEngine: require("eiows").Server
});

Related: #609

Links

4.1.1

02 Feb 09:53
9534355
Compare
Choose a tag to compare

Bug Fixes

  • do not reset the ping timer after upgrade (ff2b8ab)

Links