diff --git a/packages/fullstack/src/payloads/websocket.rs b/packages/fullstack/src/payloads/websocket.rs index b0928b5be..6737adc36 100644 --- a/packages/fullstack/src/payloads/websocket.rs +++ b/packages/fullstack/src/payloads/websocket.rs @@ -233,6 +233,20 @@ impl UseWebsocket { result } + /// Set the WebSocket connection. + /// + /// This method takes a `Result, Err>`, allowing you to drive the connection + /// into an errored state manually. + pub fn set>(&mut self, socket: Result, Err>) { + match socket { + Ok(_) => self.status.set(WebsocketState::Open), + Err(_) => self.status.set(WebsocketState::FailedToConnect), + } + + self.connection.set(Some(socket.map_err(|e| e.into()))); + self.waker.wake(()); + } + /// Mark the WebSocket as closed. This is called internally when the connection is closed. fn received_shutdown(&self) { let mut _self = *self;