Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update socketio-group to v4.0 (major) #79

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ccopsey
Copy link
Contributor

@ccopsey ccopsey commented Dec 8, 2021

This PR contains the following updates:

Package Type Update Change
socket.io dependencies major 2.0.0 -> 4.0.2
socket.io-client dependencies major 2.0.0 -> 4.0.2

Release Notes

socketio/socket.io

v4.0.2

Compare Source

Bug Fixes
  • typings: make "engine" attribute public (b81ce4c)
  • properly export the Socket class (d65b6ee)

v4.0.1

Compare Source

Bug Fixes

v4.0.0

Compare Source

Bug Fixes
  • make io.to(...) immutable (ac9e8ca)
Features

3.1.2 (2021-02-26)

Bug Fixes
  • ignore packets received after disconnection (494c64e)

3.1.1 (2021-02-03)

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)

v3.1.2

Compare Source

Bug Fixes
  • ignore packets received after disconnection (494c64e)

v3.1.1

Compare Source

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)

v3.1.0

Compare Source

Features
Bug Fixes
  • allow integers as event names (1c220dd)

3.0.5 (2021-01-05)

Bug Fixes
  • properly clear timeout on connection failure (170b739)
Reverts
  • restore the socket middleware functionality (bf54327)

3.0.4 (2020-12-07)

3.0.3 (2020-11-19)

3.0.2 (2020-11-17)

Bug Fixes
  • merge Engine.IO options (43705d7)

3.0.1 (2020-11-09)

Bug Fixes
  • export ServerOptions and Namespace types (#​3684) (f62f180)
  • typings: update the signature of the emit method (50671d9)

v3.0.5

Compare Source

Bug Fixes
  • properly clear timeout on connection failure (170b739)
Reverts
  • restore the socket middleware functionality (bf54327)

v3.0.4

Compare Source

v3.0.3

Compare Source

v3.0.2

Compare Source

Bug Fixes
  • merge Engine.IO options (43705d7)

v3.0.1

Compare Source

Bug Fixes
  • export ServerOptions and Namespace types (#​3684) (f62f180)
  • typings: update the signature of the emit method (50671d9)

v3.0.0

Compare Source

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
  • the Socket#use() method is removed (see 5c73733)

  • Socket#join() and Socket#leave() do not accept a callback argument anymore.

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.

v2.4.1

Compare Source

This release reverts the breaking change introduced in 2.4.0 (socketio/socket.io@f78a575).

If you are using Socket.IO v2, you should explicitly allow/disallow cross-origin requests:

  • without CORS (server and client are served from the same domain):
const io = require("socket.io")(httpServer, {
  allowRequest: (req, callback) => {
    callback(null, req.headers.origin === undefined); // cross-origin requests will not be allowed
  }
});
  • with CORS (server and client are served from distinct domains):
io.origins(["http://localhost:3000"]); // for local development
io.origins(["https://example.com"]);

In any case, please consider upgrading to Socket.IO v3, where this security issue is now fixed (CORS is disabled by default).

Reverts
  • fix(security): do not allow all origins by default (a169050)
Links:

v2.4.0

Compare Source

Related blog post: https://socket.io/blog/socket-io-2-4-0/

Features (from Engine.IO)
  • add support for all cookie options (19cc582)
  • disable perMessageDeflate by default (5ad2736)
Bug Fixes
  • security: do not allow all origins by default (f78a575)
  • properly overwrite the query sent in the handshake (d33a619)

⚠️ BREAKING CHANGE ⚠️

Previously, CORS was enabled by default, which meant that a Socket.IO server sent the necessary CORS headers (Access-Control-Allow-xxx) to any domain. This will not be the case anymore, and you now have to explicitly enable it.

Please note that you are not impacted if:

  • you are using Socket.IO v2 and the origins option to restrict the list of allowed domains
  • you are using Socket.IO v3 (disabled by default)

This commit also removes the support for '*' matchers and protocol-less URL:

io.origins('https://example.com:443'); => io.origins(['https://example.com']);
io.origins('localhost:3000');          => io.origins(['http://localhost:3000']);
io.origins('http://localhost:*');      => io.origins(['http://localhost:3000']);
io.origins('*:3000');                  => io.origins(['http://localhost:3000']);

To restore the previous behavior (please use with caution):

io.origins((_, callback) => {
  callback(null, true);
});

See also:

Thanks a lot to @​ni8walk3r for the security report.

Links:

v2.3.0

Compare Source

This release mainly contains a bump of the engine.io and ws packages, but no additional features.

Links:

v2.2.0

Compare Source

Features

  • add cache-control header when serving the client source (#​2907)

Bug fixes

  • throw an error when trying to access the clients of a dynamic namespace (#​3355)
Links

v2.1.1

Compare Source

Features

socket.local.to('room101').emit(/* */);

Bug fixes

(client) fire an error event on middleware failure for non-root namespace (socketio/socket.io-client#1202)

Links:

v2.1.0

Compare Source

Features
// 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);
  • add support for dynamic namespaces (#​3195)
io.of(/^\/dynamic-\d+$/).on('connect', (socket) => {
  // socket.nsp.name = '/dynamic-101'
});

// client-side
const client = require('socket.io-client')('/dynamic-101');
Bug fixes
  • properly emit 'connect' when using a custom namespace (#​3197)
  • include the protocol in the origins check (#​3198)
Important note ⚠️ from Engine.IO 3.2.0 release

There are two non-breaking changes that are somehow quite important:

var engine = require('engine.io');
var server = engine.listen(3000, {
  wsEngine: 'uws'
});
Links:

v2.0.4

Compare Source

Bug fixes

  • do not throw when receiving an unhandled error packet (#​3038)
  • reset rooms object before broadcasting from namespace (#​3039)
Links:

v2.0.3

Compare Source

Bug fixes

  • reset rooms object before broadcasting (#​2970)
  • fix middleware initialization (#​2969)
Links:

v2.0.2

Compare Source

Bug fixes
  • fix timing issues with middleware (#​2948)
Links:

v2.0.1

Compare Source

Bug fixes

- update path of client file (#​2934)

Links:
socketio/socket.io-client

v4.0.2

Compare Source

Bug Fixes
  • typings: add fallback to untyped event listener (5394669)
  • ensure buffered events are sent in order (34f822f)
  • ensure connections are properly multiplexed (dd2a8fc)
  • properly export the Socket class (e20d487)

v4.0.1

Compare Source

Bug Fixes

v4.0.0

Compare Source

The major bump is due to some breaking changes on the server side.

Bug Fixes
  • bundle: restore support for JS modules (43613d1)
Features
  • add autoUnref option (6abfa1f)
  • add support for typed events (5902365)

3.1.2 (2021-02-26)

Bug Fixes
  • restore support for web workers (13b32b3)
  • silently close the transport in the beforeunload hook (ed48b5d, from engine.io-client)

3.1.1 (2021-02-03)

Bug Fixes
  • include the path in the manager ID (7a0c2b5)
  • remove polyfill for process in the bundle (61afc5d)
  • typings: add return types and general-case overload signatures (#​1440) (47f917a)
  • typings: fix the type of the "query" option (#​1439) (f02ab3b)

v3.1.3

Compare Source

Bug Fixes
  • bundle: restore support for JS modules (afa7953)
Links:
  • Diff: socketio/socket.io-client@3.1.2...3.1.3
  • Server release: -
  • engine.io-client version: ~4.1.0
  • ws version: ~7.4.2
  • Build size
    • socket.io.min.js: 60.3 KB (=)
    • socket.io.msgpack.min.js: 61.3 KB (=)

v3.1.2

Compare Source

Bug Fixes
  • restore support for web workers (13b32b3)
  • silently close the transport in the beforeunload hook (ed48b5d, from engine.io-client)

v3.1.1

Compare Source

Bug Fixes
  • include the path in the manager ID (7a0c2b5)
  • remove polyfill for process in the bundle (61afc5d)
  • typings: add return types and general-case overload signatures (#​1440) (47f917a)
  • typings: fix the type of the "query" option (#​1439) (f02ab3b)

v3.1.0

Compare Source

Bug Fixes

3.0.5 (2021-01-05)

Bug Fixes
  • emit a connect_error event upon connection failure (53c7374)
  • typings: make sendBuffer and receiveBuffer public (b83f89c)

3.0.4 (2020-12-07)

Bug Fixes

3.0.3 (2020-11-19)

Bug Fixes
  • properly export io in ES modules wrapper (bec1524)

3.0.2 (2020-11-17)

Bug Fixes

3.0.1 (2020-11-09)

Bug Fixes

v3.0.5

Compare Source

Bug Fixes
  • emit a connect_error event upon connection failure (53c7374)
  • typings: make sendBuffer and receiveBuffer public (b83f89c)

v3.0.4

Compare Source

Bug Fixes

v3.0.3

Compare Source

Bug Fixes
  • properly export io in ES modules wrapper (bec1524)

v3.0.2

Compare Source

Bug Fixes

v3.0.1

Compare Source

Bug Fixes

v3.0.0

Compare Source

Code Refactoring
  • rename ERROR to CONNECT_ERROR (13e1db7)
Features
  • emit an Error object upon middleware error (0939395)
  • add bundle with msgpack parser (71d6048)
  • add support for catch-all listeners (55f464f)
  • add volatile events (7ddad2c)
  • move binary detection back to the parser (1789094)
  • add ES6 module export (cbabb03)
  • do not reuse the Engine.IO id (bbe94ad)
  • remove the implicit connection to the default namespace (249e0be)
  • split the events of the Manager and Socket (132f8ec)
  • throw upon reserved event names (6494f61)
BREAKING CHANGES
  • the Socket instance will now emit a "connect_error" event instead of "error" (which is not a reserved event anymore)
// before
socket.on("error", () => {});

// after
socket.on("connect_error", () => {});
  • the Socket#binary() method is removed, as this use case is now covered by the ability to provide your own parser.

  • the Socket instance will no longer forward the events of its Manager

Those events can still be accessed on the Manager instance though:

socket.io.on("reconnect", () => {
  // ...
});

v2.4.0

Compare Source

The minor bump is matching the bump of the server, but there is no new feature in this release.

Links:

v2.3.1

Compare Source

The debug dependency has been reverted to ~3.1.0, as the newer versions contains ES6 syntax which breaks in IE
browsers.

Please note that this only applied to users that bundle the Socket.IO client in their application, with webpack for
example, as the "official" bundles (in the dist/ folder) were already transpiled with babel.

For webpack users, you can also take a look at the webpack-remove-debug
plugin.

Bug Fixes
  • fix reconnection after opening socket asynchronously (#​1253) (050108b)

v2.3.0

Compare Source

Links:

v2.2.0

Compare Source

Bug fixes

Links:

v2.1.1

Compare Source

Bug fixes

  • fire an error event on middleware failure for non-root namespace (#​1202)
Links:

v2.1.0

Compare Source

Matching Socket.IO 2.1.0 release notes

Features
// 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);
Links:

v2.0.4

Compare Source

Following server version bump.

Links:

v2.0.3

Compare Source

Following server version bump.

Links:

v2.0.2

Compare Source

Bug fixes
  • do not update the opts.query reference (#​1121)
Links:

v2.0.1

Compare Source

(following socket.io version bump)

Links:

Configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant