namespace ScrapperAPI.Hub; public sealed class ScrapeHub : Microsoft.AspNetCore.SignalR.Hub { public Task Subscribe(int sessionId) => Groups.AddToGroupAsync(Context.ConnectionId, GroupName(sessionId)); public Task Unsubscribe(int sessionId) => Groups.RemoveFromGroupAsync(Context.ConnectionId, GroupName(sessionId)); public Task SubscribeOverview() => Groups.AddToGroupAsync(Context.ConnectionId, OverviewGroup); public Task UnsubscribeOverview() => Groups.RemoveFromGroupAsync(Context.ConnectionId, OverviewGroup); public static string GroupName(int sessionId) => $"session:{sessionId}"; public const string OverviewGroup = "overview"; }