From 26d8f2f620326fabfa9d46e789511802e3399eb9 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 26 May 2026 05:17:56 -0400 Subject: [PATCH] feat(adminui): FleetStatusHub + AlertHub + MapOtOpcUaHubs (broadcaster bridge tracked as F16) --- .../ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/AlertHub.cs | 9 +++++++++ .../Hubs/FleetStatusHub.cs | 18 ++++++++++++++++++ .../Hubs/HubRouteBuilderExtensions.cs | 14 ++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/AlertHub.cs create mode 100644 src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/FleetStatusHub.cs create mode 100644 src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/HubRouteBuilderExtensions.cs diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/AlertHub.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/AlertHub.cs new file mode 100644 index 0000000..541496a --- /dev/null +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/AlertHub.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.SignalR; + +namespace ZB.MOM.WW.OtOpcUa.AdminUI.Hubs; + +/// Browser-facing alert / toast push channel. Bridge wiring staged for F16. +public sealed class AlertHub : Hub +{ + public const string Endpoint = "/hubs/alerts"; +} diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/FleetStatusHub.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/FleetStatusHub.cs new file mode 100644 index 0000000..7e23051 --- /dev/null +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/FleetStatusHub.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.SignalR; +using ZB.MOM.WW.OtOpcUa.Commons.Messages.Fleet; + +namespace ZB.MOM.WW.OtOpcUa.AdminUI.Hubs; + +/// +/// Browser-facing fleet-status push channel. Subscribers receive +/// snapshots whenever the admin-role FleetStatusBroadcaster publishes a diff. +/// +/// Server-side bridge from FleetStatusBroadcaster.broadcastIHubContext<FleetStatusHub> +/// is staged for follow-up F16. For now the hub is a passive channel; SignalR clients connect +/// and stay idle until the bridge lands. +/// +public sealed class FleetStatusHub : Hub +{ + public const string Endpoint = "/hubs/fleet-status"; + public const string MethodName = "fleetStatusChanged"; +} diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/HubRouteBuilderExtensions.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/HubRouteBuilderExtensions.cs new file mode 100644 index 0000000..95e1a5a --- /dev/null +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Hubs/HubRouteBuilderExtensions.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Routing; + +namespace ZB.MOM.WW.OtOpcUa.AdminUI.Hubs; + +public static class HubRouteBuilderExtensions +{ + public static IEndpointRouteBuilder MapOtOpcUaHubs(this IEndpointRouteBuilder app) + { + app.MapHub(FleetStatusHub.Endpoint); + app.MapHub(AlertHub.Endpoint); + return app; + } +}