Changed thread / added helper for UI based messages on MAIN thread.

This commit is contained in:
2026-04-06 15:26:23 -04:00
parent 7af1295754
commit e5a1166bec
2 changed files with 30 additions and 4 deletions

View File

@@ -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}");
}
});
}
}

View File

@@ -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);
}
/// <summary>
/// Extracts a display username from a stored user record id value.