NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1922 most downloaded on npm
Parser for the client for the realtime Engine
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 9 days to 8 months
Some releases are documented
notes for 25 of 50 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
52 releases · first in 2013
do not expose the TransformStream type
typescript: properly import the TransformStream type
One column per quarter.
The format of the WebTransport frame has been slightly updated.
The format of the WebTransport frame has been slightly updated.
prepend a header to each WebTransport chunk
implement WebTransport-related encoding/decoding
The CommonJS build now includes the TypeScript declarations too, in order to be compatible the "node16" moduleResolution.
The CommonJS build now includes the TypeScript declarations too, in order to be compatible the "node16" moduleResolution.
The compile script was not run before publishing 5.0.5, so the esm build did not include the latest changes.
The compile script was not run before publishing 5.0.5, so the esm build did not include the latest changes.
properly encode empty buffer in base64 encoding
add missing file extension for ESM import
Nothing published for this version
add package name in nested package.json
### Bug Fixes * fix vite build
This release includes the migration to TypeScript. The major bump is due to the new "exports" field in the package.json file.
This release includes the migration to TypeScript. The major bump is due to the new "exports" field in the package.json file.
See also: https://nodejs.org/api/packages.html#packages_package_entry_points
respect the offset and length of TypedArray objects
typings: make "engine" attribute public
typings: add fallback to untyped event listener
Blog post: https://socket.io/blog/socket-io-4-release/ Migration guide: https://socket.io/docs/v3/migrating-from-3-x-to-4-0/
Blog post: https://socket.io/blog/socket-io-4-release/ Migration guide: https://socket.io/docs/v3/migrating-from-3-x-to-4-0/
io.to(...) now returns an immutable operatorPreviously, broadcasting to a given room (by calling io.to()) would mutate the io instance, which could lead to surprising behaviors, like:
io.to("room1");
io.to("room2").emit(/* ... */); // also sent to room1
// or with async/await
io.to("room3").emit("details", await fetchDetails()); // random behavior: maybe in room3, maybe to all clients
Calling io.to() (or any other broadcast modifier) will now return an immutable instance.
~5.0.0~7.4.2This major release contains the necessary changes for the version 4 of the Engine.IO protocol. More information about the new version can be found there.
Encoding changes between v3 and v4:
encodePacket with string
{ type: "message", data: "hello" }"4hello""4hello"encodePacket with binary
{ type: 'message', data: <Buffer 01 02 03> }<Buffer 04 01 02 03><Buffer 01 02 03>encodePayload with strings
[ { type: 'message', data: 'hello' }, { type: 'message', data: '€€€' } ]"6:4hello4:4€€€""4hello\x1e4€€€"encodePayload with string and binary
[ { type: 'message', data: 'hello' }, { type: 'message', data: <Buffer 01 02 03> } ]<Buffer 00 06 ff 34 68 65 6c 6c 6f 01 04 ff 04 01 02 03>"4hello\x1ebAQID"Please note that the parser is now dependency-free! This should help reduce the size of the browser bundle.
implement the version 4 of the protocol
remove packet type when encoding binary packets
Protocol v3: { type: 'message', data: <Buffer 01 02 03> } => <Buffer 04 01 02 03> Protocol v4: { type: 'message', data: <Buffer 01 02 03> } => <Buffer 01 02 03>
Nothing published for this version
add cache-control header when serving the client source
Reference: https://nodejs.org/docs/latest/api/buffer.html#buffer_class_method_buffer_allocunsafe_size
Nothing published for this version
Nothing published for this version
add local flag to the socket object
socket.local.to('room101').emit(/* */);
(client) fire an error event on middleware failure for non-root namespace (https://github.com/socketio/socket.io-client/pull/1202)
There are two non-breaking changes that are somehow quite important:
// by default, the object is recursively scanned to check whether it contains some binary data
// in the following example, the check is skipped in order to improve performance
socket.binary(false).emit('plain-object', object);
// it also works at the namespace level
io.binary(false).emit('plain-object', object);
io.of(/^\/dynamic-\d+$/).on('connect', (socket) => {
// socket.nsp.name = '/dynamic-101'
});
// client-side
const client = require('socket.io-client')('/dynamic-101');
There are two non-breaking changes that are somehow quite important:
ws was reverted as the default wsEngine (https://github.com/socketio/engine.io/pull/550), as there was several blocking issues with uws. You can still use uws by running npm install uws --save in your project and using the wsEngine option:var engine = require('engine.io');
var server = engine.listen(3000, {
wsEngine: 'uws'
});
pingTimeout now defaults to 5 seconds (instead of 60 seconds): https://github.com/socketio/engine.io/pull/551reset rooms object before broadcasting
engine.io: -ws: -fix timing issues with middleware
engine.io: -ws: -## Bug fixes - update path of client file (#2934) #### Links: - Milestone: 2.0.1 - Diff: 2.0.0...2.0.1 - Client release: 2.0.1 - Diff engine.io: - - D
- update path of client file (#2934)
engine.io: -ws: -a breaking change related to utf-8 encoding in engine.io-parser
This major release brings several performance improvements:
uws is now the default Websocket engine. It should bring significant improvement in performance (particularly in terms of memory consumption) (https://github.com/socketio/engine.io/releases/tag/2.0.0)
the Engine.IO and Socket.IO handshake packets were merged, reducing the number of roundtrips necessary to establish a connection. (#2833)
it is now possible to provide a custom parser according to the needs of your application (#2829). Please take a look at the example for more information.
Please note that this release is not backward-compatible, due to:
Please also note that if you are using a self-signed certificate, rejectUnauthorized now defaults to true (https://github.com/socketio/engine.io-client/pull/558).
Finally, the API documentation is now in the repository (here), and the content of the website here. Do not hesitate if you see something wrong or missing!
The full list of changes:
local flag (#2816)clients method in the API documentation (#2812)Besides, we are proud to announce that Socket.IO is now a part of open collective: https://opencollective.com/socketio. More on that later.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This release contains an important refactor of the adapter (this commit), as most of the logic has been moved in the ClusterAdapter class of the socke
This release contains an important refactor of the adapter (this commit), as most of the logic has been moved in the ClusterAdapter class of the socket.io-adapter package.
Besides, the @socket.io/cluster-adapter package is now part of the socket.io monorepo.
Nothing published for this version
Nothing published for this version
guard client lookups against prototype pollution
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →