public async Task RemoveSession(RemoveSessionRequest item) { var connectionId = Context.ConnectionId; var instance = BroadcasterManager.GetInstance(); if (!instance.IsBroadcaster(connectionId)) { return; } var info = instance.GetConnectionInfo(connectionId); var roomManager = RoomManager.GetInstance(); var room = roomManager.GetRoomInfo(info.RoomId); if (!room.IsOwnerSession(item.SessionId, connectionId)) { return; } await room.RemoveSession(item); }
public async Task RemoveSession(RemoveSessionRequest item) { if (this.Sessions.ContainsKey(item.SessionId)) { this.Sessions.Remove(item.SessionId); var manager = ListenerManager.GetInstance(); await Task.Run(() => { Parallel.ForEach(this.Listeners, c => { var listener = manager.GetConnectionInfo(c); if (listener != null) { lock (listener) { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>(); hubContext.Clients.Group(this.RoomId).RemoveSession(item); } } }); }); } }
public async Task RemoveSession(RemoveSessionRequest item) { var connectionId = Context.ConnectionId; var instance = BroadcasterManager.GetInstance(); if (!instance.IsBroadcaster(connectionId)) return; var info = instance.GetConnectionInfo(connectionId); var roomManager = RoomManager.GetInstance(); var room = roomManager.GetRoomInfo(info.RoomId); if (!room.IsOwnerSession(item.SessionId, connectionId)) return; await room.RemoveSession(item); }
public async Task RemoveSession(RemoveSessionRequest item) { if (this.Sessions.ContainsKey(item.SessionId)) { this.Sessions.Remove(item.SessionId); var manager = ListenerManager.GetInstance(); await Task.Run(() => { Parallel.ForEach(this.Listeners, c => { var listener = manager.GetConnectionInfo(c); if (listener != null) { lock (listener) { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>(); hubContext.Clients.Group(this.RoomId).RemoveSession(item); } } }); }); } }