diff --git a/RelayClient/MainPage.xaml.cs b/RelayClient/MainPage.xaml.cs index dc362a7..28aa0b3 100644 --- a/RelayClient/MainPage.xaml.cs +++ b/RelayClient/MainPage.xaml.cs @@ -104,6 +104,9 @@ public partial class MainPage : ContentPage Console.WriteLine(e.Data); return; } + + SafeSendRawToWebView($"[{_username}] RAW WS DATA: {e.Data}"); + Console.WriteLine($"[{_username}] RAW WS DATA: {e.Data}"); @@ -358,9 +361,9 @@ public partial class MainPage : ContentPage { //TODO: get bool value for if channel ID has an active call //TODO: Join RTC using current channel ID - hybridWebView.SendRawMessage($"Attempting to join RTC Channel {_currentChannelName}"); + SafeSendRawToWebView($"Attempting to join RTC Channel {_currentChannelName}"); bool active = await ServerAPI.GetIsChannelActiveAsync(_currentChannelId); - hybridWebView.SendRawMessage($"Rtc Channel {_currentChannelName} is active: {active}"); + SafeSendRawToWebView($"Rtc Channel {_currentChannelName} is active: {active}"); return active; //await hybridWebView.EvaluateJavaScriptAsync($"window.channelCallJoin({active})"); @@ -380,7 +383,7 @@ public partial class MainPage : ContentPage } catch (Exception ex) { - hybridWebView.SendRawMessage(ex.Message); + SafeSendRawToWebView(ex.Message); } } @@ -408,7 +411,7 @@ public partial class MainPage : ContentPage private void OnSendMessageButtonClicked(object sender, EventArgs e) { - hybridWebView.SendRawMessage($"Hello from C#!"); + SafeSendRawToWebView($"Hello from C#!"); } private async void OnHybridWebViewRawMessageReceived(object sender, HybridWebViewRawMessageReceivedEventArgs e) @@ -477,4 +480,19 @@ public partial class MainPage : ContentPage Console.WriteLine($"[{_username}] pushed RTC context into HybridWebView."); } + + private void SafeSendRawToWebView(string message) + { + MainThread.BeginInvokeOnMainThread(() => + { + try + { + hybridWebView.SendRawMessage(message); + } + catch (Exception ex) + { + Console.WriteLine($"[{_username}] failed to send raw message to HybridWebView: {ex.Message}"); + } + }); + } } \ No newline at end of file diff --git a/RelayServer/Services/Chat/ChatSocketBehavior.cs b/RelayServer/Services/Chat/ChatSocketBehavior.cs index f90afae..9fd9b89 100644 --- a/RelayServer/Services/Chat/ChatSocketBehavior.cs +++ b/RelayServer/Services/Chat/ChatSocketBehavior.cs @@ -5,6 +5,7 @@ using RelayServer.Services.Data; using RelayServer.Services.Rtc; using WebSocketSharp; using WebSocketSharp.Server; +using ErrorEventArgs = WebSocketSharp.ErrorEventArgs; namespace RelayServer.Services.Chat; @@ -77,8 +78,15 @@ public class ChatSocketBehavior : WebSocketBehavior protected override void OnClose(CloseEventArgs e) { RtcChannelPresenceService.RemoveSession(ID); + Console.WriteLine($"WebSocket closed: session={ID}, code={e.Code}, reason={e.Reason}"); base.OnClose(e); } + + protected override void OnError(ErrorEventArgs e) + { + Console.WriteLine($"WebSocket error: session={ID}, message={e.Message}"); + base.OnError(e); + } /// /// Extracts a display username from a stored user record id value.