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; + } +}