示例#1
0
        //public async Task StartBroadcast()
        //{
        //    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.NotifyStartBroadcast();
        //}

        //public async Task StopBroadcast()
        //{
        //    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.NotifyStopBroadcast();
        //}

        #endregion

        #region "Session系"

        public async Task <AppendSessionResponse> AppendSession(AppendSessionRequest item)
        {
            var connectionId = Context.ConnectionId;
            var instance     = BroadcasterManager.GetInstance();

            if (!instance.IsBroadcaster(connectionId))
            {
                return new AppendSessionResponse()
                       {
                           IsSuccess = false
                       }
            }
            ;

            var info        = instance.GetConnectionInfo(connectionId);
            var roomManager = RoomManager.GetInstance();
            var room        = roomManager.GetRoomInfo(info.RoomId);
            var id          = Guid.NewGuid().ToString();

            await room.AppendSession(id, item, connectionId, info.Nickname);

            return(new AppendSessionResponse()
            {
                IsSuccess = true, Id = id
            });
        }
示例#2
0
        public async Task AppendSession(string id, AppendSessionRequest item, string connectionId, string nickName)
        {
            if (!this.Sessions.ContainsKey(id))
            {
                var session = new SessionManager()
                {
                    Id              = id,
                    ContentType     = item.ContentType,
                    FileName        = item.FileName,
                    BroadcasterId   = connectionId,
                    BroadcasterName = nickName
                };

                this.Sessions.Add(id, session);

                var manager      = ListenerManager.GetInstance();
                var notification = new AppendSessionNotification()
                {
                    Id              = id,
                    ContentType     = item.ContentType,
                    FileName        = item.FileName,
                    BroadcasterName = nickName
                };
                await Task.Run(() =>
                {
                    IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>();
                    hubContext.Clients.Group(this.RoomId).AppendSession(notification);
                });
            }
        }
示例#3
0
        //public async Task StartBroadcast()
        //{
        //    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.NotifyStartBroadcast();
        //}

        //public async Task StopBroadcast()
        //{
        //    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.NotifyStopBroadcast();
        //}

        #endregion

        #region "Session系"

        public async Task<AppendSessionResponse> AppendSession(AppendSessionRequest item)
        {
            var connectionId = Context.ConnectionId;
            var instance = BroadcasterManager.GetInstance();
            if (!instance.IsBroadcaster(connectionId))
                return new AppendSessionResponse() { IsSuccess = false };

            var info = instance.GetConnectionInfo(connectionId);
            var roomManager = RoomManager.GetInstance();
            var room = roomManager.GetRoomInfo(info.RoomId);
            var id = Guid.NewGuid().ToString();

            await room.AppendSession(id, item, connectionId, info.Nickname);
            return new AppendSessionResponse() { IsSuccess = true, Id = id };
        }
示例#4
0
        public async Task AppendSession(string id, AppendSessionRequest item, string connectionId, string nickName)
        {
            if (!this.Sessions.ContainsKey(id))
            {
                var session = new SessionManager()
                {
                    Id = id,
                    ContentType = item.ContentType,
                    FileName = item.FileName,
                    BroadcasterId = connectionId,
                    BroadcasterName = nickName
                };

                this.Sessions.Add(id, session);

                var manager = ListenerManager.GetInstance();
                var notification = new AppendSessionNotification()
                {
                    Id = id,
                    ContentType = item.ContentType,
                    FileName = item.FileName,
                    BroadcasterName = nickName
                };
                await Task.Run(() =>
                {
                    IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>();
                    hubContext.Clients.Group(this.RoomId).AppendSession(notification);
                });
            }
        }