//public async Task SwitchActiveSession(SwitchActiveSessionNotification 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); // await room.SwitchActiveSession(item); //} public async Task UpdateSessionInfo(UpdateSessionInfoRequest 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.UpdateSessionInfo(item); }
//public async Task SwitchActiveSession(SwitchActiveSessionNotification item) //{ // if (this.Sessions.ContainsKey(item.SessionId)) // { // this.CurrentSession = this.Sessions[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).SwitchActiveSession(item); // } // } // }); // }); // } //} #endregion public async Task UpdateSessionInfo(UpdateSessionInfoRequest item) { if (this.Sessions.ContainsKey(item.SessionId)) { var session = this.Sessions[item.SessionId]; session.ContentType = item.ContentType; session.FileName = item.FileName; var notification = new AppendSessionNotification() { Id = item.SessionId, ContentType = item.ContentType, FileName = item.FileName, BroadcasterName = session.BroadcasterName }; var manager = ListenerManager.GetInstance(); await Task.Run(() => { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>(); hubContext.Clients.Group(this.RoomId).UpdateSessionInfo(notification); }); } }
//public async Task SwitchActiveSession(SwitchActiveSessionNotification 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); // await room.SwitchActiveSession(item); //} public async Task UpdateSessionInfo(UpdateSessionInfoRequest 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.UpdateSessionInfo(item); }
//public async Task SwitchActiveSession(SwitchActiveSessionNotification item) //{ // if (this.Sessions.ContainsKey(item.SessionId)) // { // this.CurrentSession = this.Sessions[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).SwitchActiveSession(item); // } // } // }); // }); // } //} #endregion public async Task UpdateSessionInfo(UpdateSessionInfoRequest item) { if (this.Sessions.ContainsKey(item.SessionId)) { var session = this.Sessions[item.SessionId]; session.ContentType = item.ContentType; session.FileName = item.FileName; var notification = new AppendSessionNotification() { Id = item.SessionId, ContentType = item.ContentType, FileName = item.FileName, BroadcasterName = session.BroadcasterName }; var manager = ListenerManager.GetInstance(); await Task.Run(() => { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>(); hubContext.Clients.Group(this.RoomId).UpdateSessionInfo(notification); }); } }