From 807e564862077676306b25e5774d421144f14cfe Mon Sep 17 00:00:00 2001 From: Totodore Date: Tue, 5 Dec 2023 22:02:40 +0100 Subject: [PATCH 1/3] test: add async handler in test --- e2e/socketioxide/socketioxide.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e/socketioxide/socketioxide.rs b/e2e/socketioxide/socketioxide.rs index 32f5104c..5f6f162b 100644 --- a/e2e/socketioxide/socketioxide.rs +++ b/e2e/socketioxide/socketioxide.rs @@ -23,9 +23,10 @@ fn on_connect(socket: SocketRef, Data(data): Data) { }, ); + // keep this handler async to test async message handlers socket.on( "message-with-ack", - |Data::(data), ack: AckSender, Bin(bin)| { + |Data::(data), ack: AckSender, Bin(bin)| async move { info!("Received event: {:?} {:?}", data, bin); ack.bin(bin).send(data).ok(); }, From f3750d06ea0799098b22bc7111e8fee3092e1e42 Mon Sep 17 00:00:00 2001 From: Totodore Date: Tue, 5 Dec 2023 22:06:20 +0100 Subject: [PATCH 2/3] fix(socketio/handler): spawn the returned future for `MessageHandler` --- socketioxide/src/handler/message.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/socketioxide/src/handler/message.rs b/socketioxide/src/handler/message.rs index 8589b3a5..a4501e14 100644 --- a/socketioxide/src/handler/message.rs +++ b/socketioxide/src/handler/message.rs @@ -269,7 +269,8 @@ macro_rules! impl_async_handler { }, }; - (self.clone())($($ty,)* last); + let fut = (self.clone())($($ty,)* last); + tokio::spawn(fut); } } }; From 134f36f30e78ed90e7409991f8644b61ffa1b0dd Mon Sep 17 00:00:00 2001 From: Totodore Date: Tue, 5 Dec 2023 22:12:31 +0100 Subject: [PATCH 3/3] chore(deps): bump to v0.7.3 --- CHANGELOG.md | 4 ++++ Cargo.lock | 30 +++++++++++++++--------------- Cargo.toml | 2 +- socketioxide/Cargo.toml | 2 +- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b82a948..06d55c81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.7.3 +## socketioxide +* Fix [#189](https://github.com/Totodore/socketioxide/issues/189). Async message handlers were never called because the returned future was not spawned with `tokio::spawn`. + # 0.7.2 ## socketioxide * The `on_disconnect` callback now takes a `SocketRef` rather than an `Arc` to match other handlers. It also avoids that the user clone the socket and create a memory leak. diff --git a/Cargo.lock b/Cargo.lock index 9592a31b..46d892fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,7 +84,7 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "angular-todomvc" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", @@ -171,7 +171,7 @@ dependencies = [ [[package]] name = "axum-echo" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde_json", @@ -183,7 +183,7 @@ dependencies = [ [[package]] name = "background-task" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", @@ -218,7 +218,7 @@ checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "basic-crud-application" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", @@ -566,7 +566,7 @@ dependencies = [ [[package]] name = "engineio-echo" -version = "0.7.2" +version = "0.7.3" dependencies = [ "hyper 0.14.27", "serde_json", @@ -579,7 +579,7 @@ dependencies = [ [[package]] name = "engineioxide" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "base64", @@ -608,7 +608,7 @@ dependencies = [ [[package]] name = "engineioxide-e2e" -version = "0.7.2" +version = "0.7.3" dependencies = [ "engineioxide", "hyper 0.14.27", @@ -999,7 +999,7 @@ dependencies = [ [[package]] name = "hyper-echo" -version = "0.7.2" +version = "0.7.3" dependencies = [ "hyper 0.14.27", "serde_json", @@ -1030,7 +1030,7 @@ dependencies = [ [[package]] name = "hyper-v1-echo" -version = "0.7.2" +version = "0.7.3" dependencies = [ "hyper 1.0.0-rc.4", "hyper-util", @@ -1444,7 +1444,7 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "private-messaging" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", @@ -1639,7 +1639,7 @@ dependencies = [ [[package]] name = "salvo-echo" -version = "0.7.2" +version = "0.7.3" dependencies = [ "salvo", "serde_json", @@ -1886,7 +1886,7 @@ dependencies = [ [[package]] name = "socketio-chat" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", @@ -1901,7 +1901,7 @@ dependencies = [ [[package]] name = "socketioxide" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "criterion", @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "socketioxide-e2e" -version = "0.7.2" +version = "0.7.3" dependencies = [ "hyper 0.14.27", "serde_json", @@ -2501,7 +2501,7 @@ dependencies = [ [[package]] name = "whiteboard" -version = "0.7.2" +version = "0.7.3" dependencies = [ "axum", "serde", diff --git a/Cargo.toml b/Cargo.toml index 29c9e62a..bcaa4503 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ hyper-v1 = { package = "hyper", version = "1.0.0-rc.4", features = [ ] } [workspace.package] -version = "0.7.2" +version = "0.7.3" edition = "2021" rust-version = "1.67.0" authors = ["Théodore Prévot <"] diff --git a/socketioxide/Cargo.toml b/socketioxide/Cargo.toml index f7ecff05..289019b4 100644 --- a/socketioxide/Cargo.toml +++ b/socketioxide/Cargo.toml @@ -14,7 +14,7 @@ readme = "../README.md" [dependencies] -engineioxide = { path = "../engineioxide", version = "0.7.2" } +engineioxide = { path = "../engineioxide", version = "0.7.3" } futures.workspace = true tokio = { workspace = true, features = ["rt"] } serde.workspace = true