From cf51dcf052af89f8742d887bde2c93d735309bdd Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Sun, 13 Apr 2025 16:45:53 +0100 Subject: feat(lampada): wasm + websockets support --- lampada/src/connection/mod.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'lampada/src/connection/mod.rs') diff --git a/lampada/src/connection/mod.rs b/lampada/src/connection/mod.rs index 2d570ae..a3dde16 100644 --- a/lampada/src/connection/mod.rs +++ b/lampada/src/connection/mod.rs @@ -8,7 +8,7 @@ use std::{ }; use jid::JID; -use luz::{connection::Tls, jabber_stream::bound_stream::BoundJabberStream}; +use luz::jabber_stream::bound_stream::BoundJabberStream; use read::{ReadControl, ReadControlHandle, ReadState}; use stanza::{client::Stanza, stream_error::Error as StreamError}; use tokio::{ @@ -86,13 +86,13 @@ impl Supervisor { info!("sent disconnect command"); tokio::select! { _ = async { tokio::join!( - async { let _ = (&mut self.write_control_handle.handle).await; }, - async { let _ = (&mut self.read_control_handle.handle).await; } + // async { let _ = (&mut self.write_control_handle.handle).await; }, + // async { let _ = (&mut self.read_control_handle.handle).await; } ) } => {}, // TODO: config timeout _ = async { tokio::time::sleep(Duration::from_secs(5)) } => { - (&mut self.read_control_handle.handle).abort(); - (&mut self.write_control_handle.handle).abort(); + // (&mut self.read_control_handle.handle).abort(); + // (&mut self.write_control_handle.handle).abort(); } } info!("disconnected"); @@ -257,7 +257,8 @@ impl Supervisor { pub struct SupervisorHandle { sender: SupervisorSender, - handle: JoinHandle<()>, + // TODO: is not having handles fine? + // handle: JoinHandle<()>, } impl Deref for SupervisorHandle { @@ -295,7 +296,7 @@ impl DerefMut for SupervisorSender { impl SupervisorHandle { pub fn new( - streams: BoundJabberStream, + streams: BoundJabberStream, on_crash: oneshot::Sender<()>, jid: JID, server: JID, @@ -341,13 +342,15 @@ impl SupervisorHandle { logic, ); - let handle = tokio::spawn(async move { actor.run().await }); + #[cfg(target_arch = "wasm32")] + wasm_bindgen_futures::spawn_local(async move { actor.run().await }); + #[cfg(not(target_arch = "wasm32"))] + tokio::spawn(async move { actor.run().await }); ( write_handle, Self { sender: supervisor_sender, - handle, }, ) } -- cgit