From 30979f2b67d444aaea6a78fb2b6997803872aa73 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Mon, 6 Apr 2026 11:25:30 -0600 Subject: [PATCH] feat: improve websocket server shutdown process and enhance codec preset handling --- src/PepperDash.Core/Logging/DebugWebsocketSink.cs | 8 ++++++++ .../RequestHandlers/DebugSessionRequestHandler.cs | 4 ++-- .../Messengers/VideoCodecBaseMessenger.cs | 12 +++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/PepperDash.Core/Logging/DebugWebsocketSink.cs b/src/PepperDash.Core/Logging/DebugWebsocketSink.cs index 9c3df14e..72da634c 100644 --- a/src/PepperDash.Core/Logging/DebugWebsocketSink.cs +++ b/src/PepperDash.Core/Logging/DebugWebsocketSink.cs @@ -211,6 +211,14 @@ namespace PepperDash.Core public void StopServer() { Debug.Console(0, "Stopping Websocket Server"); + + _httpsServer.WebSocketServices[_path].Sessions.Broadcast("Server is stopping"); + + foreach (var session in _httpsServer.WebSocketServices[_path].Sessions.Sessions) + { + session.Context.WebSocket.Close(1001, "Server is stopping" ); + } + _httpsServer?.Stop(); _httpsServer = null; diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs index 01e38834..8f0f4322 100644 --- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs +++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs @@ -90,7 +90,8 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers /// protected override void HandlePost(HttpCwsContext context) { - Debug.WebsocketSink.StopServer(); + + Task.Run(() => Debug.WebsocketSink.StopServer()); context.Response.StatusCode = 200; context.Response.StatusDescription = "OK"; @@ -98,6 +99,5 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers Debug.LogMessage(LogEventLevel.Information, "Websocket Debug Session Stopped"); } - } } diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/VideoCodecBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/VideoCodecBaseMessenger.cs index 071eaf27..1228a7c0 100644 --- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/VideoCodecBaseMessenger.cs +++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/VideoCodecBaseMessenger.cs @@ -922,8 +922,18 @@ namespace PepperDash.Essentials.AppServer.Messengers if (presetsCodec != null && Codec is IHasFarEndCameraControl && (Codec as IHasFarEndCameraControl).ControllingFarEndCameraFeedback.BoolValue) + { currentPresets = presetsCodec.FarEndRoomPresets; - else if (presetsCodec != null) currentPresets = presetsCodec.NearEndPresets; + } + else if (presetsCodec != null) + { + currentPresets = presetsCodec.NearEndPresets; + } + + if (currentPresets == null) + { + return new List(); + } return currentPresets; }