using AyCode.Blazor.Components.Services; using AyCode.Core.Loggers; using AyCode.Services.Server.SignalRs; using AyCode.Services.SignalRs; using TIAM.Database.DataLayers.Users; using TIAM.Services; using TIAM.Services.Server.Logins; namespace TIAMWebApp.Server.Services; public class AcWebSignalRHubWithSessionBase(IConfiguration configuration, UserDal userDal, SessionService sessionService, TLogger logger) : AcWebSignalRHubBase(configuration, logger) where TSignalRTags : AcSignalRTags where TLogger : AcLoggerBase//Hub, IAcSignalRHubServer { protected readonly UserDal UserDal = userDal; protected SessionService SessionService = sessionService; public override async Task OnConnectedAsync() { await base.OnConnectedAsync(); SessionService.Sessions.TryAdd(Context.ConnectionId, new SessionItem(Context.ConnectionId, new LoginService(UserDal, Configuration))); Logger.Info($"_sessionService.Sessions count: {SessionService.Sessions.Count}"); ////insert or update them into database. //var CId = _context.UserIdToCId.Find(userId); //CId.ConnectionId = connectionid; //_context.Update(CId); //await _context.SaveChangesAsync(); //await base.OnConnectedAsync(); ////await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users"); } public override async Task OnDisconnectedAsync(Exception? exception) { await base.OnDisconnectedAsync(exception); if (SessionService.Sessions.TryRemove(Context.ConnectionId, out var sessionItem)) sessionItem.LoginService.Logout(); Logger.Info($"_sessionService.Sessions count: {SessionService.Sessions.Count}"); //await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users"); } }