diff --git a/src/gateway/backends/mod.rs b/src/gateway/backends/mod.rs index fe6e325..edb5dc9 100644 --- a/src/gateway/backends/mod.rs +++ b/src/gateway/backends/mod.rs @@ -2,6 +2,7 @@ pub mod tungstenite; #[cfg(all(not(target_arch = "wasm32"), feature = "client"))] pub use tungstenite::*; + #[cfg(all(target_arch = "wasm32", feature = "client"))] pub mod wasm; #[cfg(all(target_arch = "wasm32", feature = "client"))] diff --git a/src/gateway/backends/wasm.rs b/src/gateway/backends/wasm.rs index 546a05d..e9927ac 100644 --- a/src/gateway/backends/wasm.rs +++ b/src/gateway/backends/wasm.rs @@ -12,22 +12,19 @@ use crate::gateway::GatewayMessage; pub struct WasmBackend; // These could be made into inherent associated types when that's stabilized -pub type WasmSink = SplitSink>, tungstenite::Message>; -pub type WasmStream = SplitStream>>; +pub type WasmSink = SplitSink; +pub type WasmStream = SplitStream; impl WasmBackend { pub async fn connect( websocket_url: &str, ) -> Result<(WasmSink, WasmStream), crate::errors::GatewayError> { - let (websocket_stream, _) = match WsMeta::connect(); - { - Ok(websocket_stream) => websocket_stream, - Err(e) => { - return Err(GatewayError::CannotConnect { - error: e.to_string(), - }) - } - }; + let (_, websocket_stream) = match WsMeta::connect(websocket_url, None).await { + Ok(stream) => Ok(stream), + Err(e) => Err(GatewayError::CannotConnect { + error: e.to_string(), + }), + }?; Ok(websocket_stream.split()) } @@ -41,6 +38,13 @@ impl From for WsMessage { impl From for GatewayMessage { fn from(value: WsMessage) -> Self { - Self(value.to_string()) + match value { + WsMessage::Text(text) => Self(text), + WsMessage::Binary(bin) => { + let mut text = String::new(); + let _ = bin.iter().map(|v| text.push_str(&v.to_string())); + Self(text) + } + } } }