Bug Fixes
- typings: allow async listener in typed events (ccfd8ca)
Features
- ignore the query string when serving client JavaScript (#4024) (24fee27)
Bug Fixes
Bug Fixes
- typings: ensure compatibility with TypeScript 3.x (0cb6ac9)
- ensure compatibility with previous versions of the adapter (a2cf248)
Bug Fixes
- typings: properly type server-side events (b84ed1e)
- typings: properly type the adapter attribute (891b187)
Features
- add support for inter-server communication (93cce05)
- notify upon namespace creation (499c892)
- add a “connection_error” event (7096e98, from
engine.io
)
- add the “initial_headers” and “headers” events (2527543, from
engine.io
)
- add support for the “wsPreEncoded” writing option (dc381b7)
Bug Fixes
- typings: make “engine” attribute public (b81ce4c)
- properly export the Socket class (d65b6ee)
Bug Fixes
- typings: add fallback to untyped event listener (#3834) (a11152f)
- typings: update return type from emit (#3843) (1a72ae4)
Bug Fixes
Features
- add some utility methods (b25495c)
- add support for typed events (#3822) (0107510)
- allow to exclude specific rooms when broadcasting (#3789) (7de2e87)
- allow to pass an array to io.to(…) (085d1de)
Bug Fixes
- ignore packets received after disconnection (494c64e)
Bug Fixes
- properly parse the CONNECT packet in v2 compatibility mode (6f4bd7f)
- typings: add return types and general-case overload signatures (#3776) (9e8f288)
- typings: update the types of “query”, “auth” and “headers” (4f2e9a7)
Features
Bug Fixes
- allow integers as event names (1c220dd)
Bug Fixes
- properly clear timeout on connection failure (170b739)
Reverts
- restore the socket middleware functionality (bf54327)
Bug Fixes
Bug Fixes
- export ServerOptions and Namespace types (#3684) (f62f180)
- typings: update the signature of the emit method (50671d9)
Bug Fixes
- close clients with no namespace (91cd255)
Features
- emit an Error object upon middleware error (54bf4a4)
- serve msgpack bundle (aa7574f)
- add support for catch-all listeners (5c73733)
- make Socket#join() and Socket#leave() synchronous (129c641)
- remove prod dependency to socket.io-client (7603da7)
- move binary detection back to the parser (669592d)
- add ES6 module export (8b6b100)
- do not reuse the Engine.IO id (2875d2c)
- remove Server#set() method (029f478)
- remove Socket#rooms object (1507b41)
- remove the ‘origins’ option (a8c0600)
- remove the implicit connection to the default namespace (3289f7e)
- throw upon reserved event names (4bd5b23)
BREAKING CHANGES
Before:
socket.join("room1", () => {
io.to("room1").emit("hello");
});
After:
socket.join("room1");
io.to("room1").emit("hello");
// or await socket.join("room1"); for custom adapters
- the “connected” map is renamed to “sockets”
- the Socket#binary() method is removed, as this use case is now covered by the ability to provide your own parser.
- the ‘origins’ option is removed
Before:
new Server(3000, {
origins: ["https://example.com"]
});
The ‘origins’ option was used in the allowRequest method, in order to
determine whether the request should pass or not. And the Engine.IO
server would implicitly add the necessary Access-Control-Allow-xxx
headers.
After:
new Server(3000, {
cors: {
origin: "https://example.com",
methods: ["GET", "POST"],
allowedHeaders: ["content-type"]
}
});
The already existing ‘allowRequest’ option can be used for validation:
new Server(3000, {
allowRequest: (req, callback) => {
callback(null, req.headers.referer.startsWith("https://example.com"));
}
});
Socket#rooms is now a Set instead of an object
Namespace#connected is now a Map instead of an object
there is no more implicit connection to the default namespace:
// client-side
const socket = io("/admin");
// server-side
io.on("connect", socket => {
// not triggered anymore
})
io.use((socket, next) => {
// not triggered anymore
});
io.of("/admin").use((socket, next) => {
// triggered
});
- the Server#set() method was removed
This method was kept for backward-compatibility with pre-1.0 versions.
Features
- emit an Error object upon middleware error (54bf4a4)
- serve msgpack bundle (aa7574f)
Features
- add support for catch-all listeners (5c73733)
- make Socket#join() and Socket#leave() synchronous (129c641)
- remove prod dependency to socket.io-client (7603da7)
BREAKING CHANGES
Before:
socket.join("room1", () => {
io.to("room1").emit("hello");
});
After:
socket.join("room1");
io.to("room1").emit("hello");
// or await socket.join("room1"); for custom adapters
Bug Fixes
- close clients with no namespace (91cd255)
Code Refactoring
- remove duplicate _sockets map (8a5db7f)
Features
- move binary detection back to the parser (669592d)
BREAKING CHANGES
- the “connected” map is renamed to “sockets”
- the Socket#binary() method is removed, as this use case is now covered by the ability to provide your own parser.
Features
- add ES6 module export (8b6b100)
- do not reuse the Engine.IO id (2875d2c)
- remove Server#set() method (029f478)
- remove Socket#rooms object (1507b41)
- remove the ‘origins’ option (a8c0600)
- remove the implicit connection to the default namespace (3289f7e)
- throw upon reserved event names (4bd5b23)
BREAKING CHANGES
- the ‘origins’ option is removed
Before:
new Server(3000, {
origins: ["https://example.com"]
});
The ‘origins’ option was used in the allowRequest method, in order to
determine whether the request should pass or not. And the Engine.IO
server would implicitly add the necessary Access-Control-Allow-xxx
headers.
After:
new Server(3000, {
cors: {
origin: "https://example.com",
methods: ["GET", "POST"],
allowedHeaders: ["content-type"]
}
});
The already existing ‘allowRequest’ option can be used for validation:
new Server(3000, {
allowRequest: (req, callback) => {
callback(null, req.headers.referer.startsWith("https://example.com"));
}
});
Socket#rooms is now a Set instead of an object
Namespace#connected is now a Map instead of an object
there is no more implicit connection to the default namespace:
// client-side
const socket = io("/admin");
// server-side
io.on("connect", socket => {
// not triggered anymore
})
io.use((socket, next) => {
// not triggered anymore
});
io.of("/admin").use((socket, next) => {
// triggered
});
- the Server#set() method was removed
This method was kept for backward-compatibility with pre-1.0 versions.