fix: reconnect on ws failure

This commit is contained in:
Evan Carroll 2026-01-18 23:12:24 -06:00
parent 84cb4e5e78
commit 27b3658e1d
5 changed files with 430 additions and 3 deletions

View file

@ -80,6 +80,7 @@ pub struct WsError {
pub fn use_channel_websocket(
realm_slug: Signal<String>,
channel_id: Signal<Option<uuid::Uuid>>,
reconnect_trigger: Signal<u32>,
on_members_update: Callback<Vec<ChannelMemberWithAvatar>>,
on_chat_message: Callback<ChatMessage>,
on_loose_props_sync: Callback<Vec<LooseProp>>,
@ -120,6 +121,8 @@ pub fn use_channel_websocket(
Effect::new(move |_| {
let slug = realm_slug.get();
let ch_id = channel_id.get();
// Track reconnect_trigger to force reconnection when it changes
let _trigger = reconnect_trigger.get();
// Cleanup previous connection
if let Some(old_ws) = ws_ref_clone.borrow_mut().take() {
@ -458,6 +461,7 @@ fn handle_server_message(
pub fn use_channel_websocket(
_realm_slug: Signal<String>,
_channel_id: Signal<Option<uuid::Uuid>>,
_reconnect_trigger: Signal<u32>,
_on_members_update: Callback<Vec<ChannelMemberWithAvatar>>,
_on_chat_message: Callback<ChatMessage>,
_on_loose_props_sync: Callback<Vec<LooseProp>>,