fix(websocket): respond to getState requests directly over WebSocket#418
Merged
fix(websocket): respond to getState requests directly over WebSocket#418
Conversation
The getState handler was calling app.emit("timer:state-query", ...) which
fires a Tauri frontend IPC event instead of writing back through the
WebSocket connection. The requesting client received nothing.
The fix introduces a tokio mpsc channel per connection so the receive task
can push direct replies to the send task, which holds the WebSocket sender.
handle_client_message is refactored to accept Option<TimerSnapshot> and an
unbounded sender, removing the AppHandle dependency and making the function
unit-testable without a full Tauri app.
Adds five unit tests and one network-level integration test (tokio-tungstenite).
Closes #415
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
getStatehandler was callingapp.emit("timer:state-query", ...)which fires a Tauri frontend IPC event instead of writing back through the WebSocket connection. The requesting client received nothing.The fix introduces a tokio mpsc channel per connection so the receive task can push direct replies to the send task, which holds the WebSocket sender.
handle_client_messageis refactored to acceptOption<TimerSnapshot>and an unbounded sender, removing theAppHandledependency and making the function unit-testable without a full Tauri app.Adds five unit tests and one network-level integration test (
tokio-tungstenite).Closes #415