Skip to content

Releases: Totodore/socketioxide

v0.15.1

02 Nov 18:55
dbeaa0b
Compare
Choose a tag to compare

Changelog

socketioxide

  • deps: remove smallvec deps
  • doc: fix some links

engineioxide

  • fix: issue #390. First ping was sent twice because of tokio interval behavior defaulting to bursting when interval tick is missed.

What's Changed

Full Changelog: v0.15.0...v0.15.1

v0.15.0

20 Oct 15:28
ed1b8fb
Compare
Choose a tag to compare

socketioxide

  • (Breaking): New parsing system. You can now serialize and deserialize binary data inside your own types.
    It also improve performances by avoiding unnecessary allocations.
  • fix: missing extractor error logs for async message handlers.
  • feat: add custom compiler error for unimplemented handler traits.
  • deps: switch from tower to tower-service and tower-layer subcrates.
  • deps: bump tokio to 1.40.
  • deps: bump http to 1.1.
  • deps: bump hyper to 1.5.

What's Changed

  • chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /examples/react-rooms-chat/client by @dependabot in #364
  • chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /examples/loco-rooms-chat/client by @dependabot in #365
  • chore(deps-dev): bump vite from 5.0.13 to 5.4.6 in /examples/react-rooms-chat/client by @dependabot in #368
  • chore(ci): switch from node v16 to node v22 for e2e testing by @Totodore in #371
  • chore(deps-dev): bump vite from 5.0.13 to 5.4.7 in /examples/loco-rooms-chat/client by @dependabot in #370
  • chore(deps): update tokio-tungstenite requirement from 0.23.0 to 0.24.0 by @dependabot in #367
  • feat(socketio/parser): Refactor socketioxide parsing by @Totodore in #376
  • chore(deps): bump deps and switch to tower-layer and tower-service rather than tower by @Totodore in #379
  • fix(socketio/handler): trace extractor errors by @Totodore in #380
  • feat(socketio/handler): Add custom errors for unimplemented handlers by @Totodore in #381
  • doc(socketio): improve extractor docs by @Totodore in #382
  • chore(deps): prepare v0.15.0 by @Totodore in #383

Full Changelog: v0.14.1...v0.15.0

v0.14.1

14 Aug 14:46
aa92515
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.14.0...v0.14.1

v0.14.0

26 Jun 15:53
d5cf9dd
Compare
Choose a tag to compare

Changelog

Migration guide.

socketioxide

  • (Breaking): State reworked to avoid having unsafe global mutable state (issue #317). Therefore State types must now implement Clone and will be cloned for each handler where the state is used.
  • (Breaking): Extensions reworked to avoid Send + Sync requirements on extensions (issue #295). They are now extracted by Cloning. Therefore all the type must implement Clone. An Extension extractor is available to get an extension directly without calling socket.extensions.get().
  • feat: New HttpExtension types to extract extensions from the http request.
  • feat: SocketIo can now be used as an extractor. So you can now easily access the entire socket.io context from your handlers.
  • feat: Dynamic namespaces. You can know set dynamic namespaces with the dyn_ns function. You can specify patterns with the {name} syntax thanks to the matchit crate. The dynamic namespace will create a child namespace for any path that matches the given pattern with the given handler.

What's Changed

  • chore(deps): update tokio-tungstenite requirement from 0.21.0 to 0.23.0 by @dependabot in #326
  • feat(socketio/extensions): rework extensions and add an Extension decorator and an HttpExtension decorator by @Totodore in #309
  • chore(deps): remove useless dashmap dep and improve doc by @Totodore in #328
  • Feat: io client shared in socketdata by @Totodore in #327
  • doc: fix useless links by @Totodore in #329
  • chore(ci): bench only on main and on manual trigger by @Totodore in #332
  • feat: per client state by @Totodore in #330
  • feat: remove config from socket by @Totodore in #331
  • feat(socketio/packet): switch to Str type for ns path storage by @Totodore in #334
  • chore(deps): bump ws and engine.io-client in /examples/loco-rooms-chat/client by @dependabot in #336
  • chore(deps-dev): bump braces from 3.0.2 to 3.0.3 in /examples/loco-rooms-chat/client by @dependabot in #337
  • chore(deps): bump ws and engine.io-client in /examples/react-rooms-chat/client by @dependabot in #338
  • chore(deps-dev): bump braces from 3.0.2 to 3.0.3 in /examples/react-rooms-chat/client by @dependabot in #339
  • feat: namespace routing by @Totodore in #333
  • fix: add generic ns path to avoid .into() everywhere in packet by @Totodore in #340
  • feat: Namespace key in map as Str by @Totodore in #342
  • feat: Namespace key in map as Str by @Totodore in #343

Full Changelog: v0.13.1...v0.14.0

v0.13.1

08 May 13:44
Compare
Choose a tag to compare

0.13.1

engineioxide

  • fix: issue #319. Remove unnecessary panic when receiving unexpected websocket messages. This might happen with some specific socket.io clients.

What's Changed

  • fix(engineio/ws): remove unecessary panic message when receiving unexpected ws packets by @Totodore in #320

Full Changelog: v0.13.0...v0.13.1

v0.13.0

06 May 18:52
Compare
Choose a tag to compare

Changelog

socketioxide

  • fix: issue #311, the delete_ns fn was deadlocking the entire server when called from inside a disconnec_handler.
  • feat: the delete_ns is now gracefully closing the adapter as well as all its sockets before being removed.
  • feat: the API use Bytes rather than Vec<u8> to represent binary payloads. This allow to avoid unnecessary copies.
  • deps: use futures-util and futures-core rather than the whole futures crate.

engineioxide

  • feat: the API use Bytes/Str rather than Vec<u8> and String to represent payloads. This allow to avoid unnecessary copies.
  • deps: use futures-util and futures-core rather than the whole futures crate.

What's Changed

  • chore(deps-dev): bump vite from 5.0.12 to 5.0.13 in /examples/react-rooms-chat/client by @dependabot in #298
  • chore(deps-dev): bump vite from 5.0.12 to 5.0.13 in /examples/loco-rooms-chat/client by @dependabot in #299
  • tests: Improve test bed by @Totodore in #300
  • chore(deps): update salvo requirement from 0.66.0 to 0.67.0 by @dependabot in #301
  • docs: fix typo on test flag by @Totodore in #302
  • Use bytes::Bytes instead of Vec to represent binary payloads by @kelnos in #285
  • chore: remove salvo deps and corresponding doctest by @Totodore in #303
  • chore(deps): bump hyper to "1.0.3" and remove unused features by @Totodore in #304
  • chore(dev-deps): update rust_socketio requirement from 0.4.2 to 0.6.0 by @dependabot in #306
  • chore(ci/bench): add bencher configuration by @Totodore in #307
  • chore(deps): use futures_core and futures_util rather than whole futures crate by @Totodore in #305
  • feat(engineio): add a Str type for Message packet by @Totodore in #310
  • Fix: deadlocking when calling close_ns from inside a disconnect_handler by @Totodore in #316

Full Changelog: v0.12.0...v0.13.0

v0.12.0

20 Mar 22:20
3ecc207
Compare
Choose a tag to compare

MSRV: Minimum supported Rust version is now 1.75.

Changelog

  • (Breaking): Introduction of connect middlewares. It allows to execute code before the connection to the namespace is established. It is useful to check the request, to authenticate the user, to log the connection etc. It is possible to add multiple middlewares and to chain them.
  • The SocketRef extractor is now Clone. Be careful to drop clones when the socket is disconnected to avoid any memory leak.

What's Changed

Full Changelog: v0.11.1...v0.12.0

v0.11.1

20 Mar 21:55
6bdf5ce
Compare
Choose a tag to compare

socketioxide

  • fix(#232): under heavy traffic, the adjacent binary packet to the head packet requirement for engine.io was not respected. It was leading to a protocol error.

Full Changelog: v0.11.0...v0.11.1

v0.11.0

06 Mar 04:25
fc599c3
Compare
Choose a tag to compare

Changelog

socketioxide

  • fix: a panic was raised sometimes under heavy traffic with socketio v5 when the connect timeout handler is destroyed but that the chan sender is still alive.
  • (Breaking): Emit errors now contains the provided data if there is an issue with the internal channel (for example if it is full) or if the socket closed.
  • (Breaking): Operators are now splitted between Operators and BroadcastOperators in order to split logic and fn signatures between broadcast and non-broadcast operators.

engineioxide

  • fix #277: with engine.io v3, the message byte prefix 0x4 was not added to the binary payload with ws transport.
  • bump dependency base64 to 0.22.0.

What's Changed

  • fix(socketio/client): connect timeout panic under heavy traffic by @Totodore in #252
  • doc(example): add an axum tls example by @Totodore in #253
  • doc(example): chat room example with loco as a backend by @kaplanelad in #254
  • chore(conf): disable example by default by @Totodore in #256
  • fix(ci): by @Totodore in #257
  • fix(ci): by @Totodore in #259
  • chore(deps-dev): bump vite from 5.0.7 to 5.0.12 in /examples/loco-rooms-chat/client by @dependabot in #255
  • chore(deps): update loco-rs requirement from 0.2.3 to 0.3.1 by @dependabot in #263
  • feat(socketio/socket): Return emitted data in case of emission error. by @Totodore in #262
  • chore(deps): update salvo requirement from 0.65.0 to 0.66.0 by @dependabot in #266
  • fix(engineio/ws): missing extra byte in websocket binary frame on EIO v3 by @kelnos in #278
  • chore(deps): update base64 requirement from 0.21.0 to 0.22.0 by @dependabot in #279
  • chore(ci): add a heaptrack job by @Totodore in #265
  • chore(deps): bump to v0.11 by @Totodore in #281

New Contributors

Full Changelog: v0.10.2...v0.11.0

v0.10.2

22 Jan 12:20
1932548
Compare
Choose a tag to compare

socketioxide

  • New rooms fn to get all the rooms of a namespace.

What's Changed

Full Changelog: v0.10.1...v0.10.2