public async Task <AuthorizeListenerResponse> Authorize(AuthorizeListenerRequest request) { var connectionId = Context.ConnectionId; var instance = ListenerManager.GetInstance(); var tokenManager = TokenManager.GetInstance(); var roomId = tokenManager.GetTokenInfo(request.Token); if (roomId == null) { return new AuthorizeListenerResponse() { IsSuccess = false } } ; tokenManager.RemoveToken(request.Token); //// Broadcasterも立ち入り禁止になる... //using (var db = new ApplicationDbContext()) //{ // var room = await db.Rooms.Where(c => c.Name == roomId).SingleOrDefaultAsync(); // if (room == null || !room.IsLive) // return new AuthorizeListenerResponse() // { // IsSuccess = false // }; //} // OKならDBに登録(IsOpening=True) var result = await instance.RegisterListener(connectionId, roomId); if (result) { await this.Groups.Add(connectionId, roomId); return(new AuthorizeListenerResponse() { IsSuccess = true }); } else { return(new AuthorizeListenerResponse() { IsSuccess = false }); } }
public AppendSessionNotification GetSessionInfo(GetSessionRequest request) { var connectionId = Context.ConnectionId; var instance = ListenerManager.GetInstance(); if (instance.IsListener(connectionId)) { var info = instance.GetConnectionInfo(connectionId); var roomInstance = RoomManager.GetInstance(); var room = roomInstance.GetRoomInfo(info.RoomId); return(room?.GetSession(request.Id)?.GetSessionInfo() ?? null); } return(null); }
public UpdateCursorRequest GetSessionCursor(GetCursorRequest request) { var connectionId = Context.ConnectionId; var instance = ListenerManager.GetInstance(); if (instance.IsListener(connectionId)) { var info = instance.GetConnectionInfo(connectionId); var roomInstance = RoomManager.GetInstance(); var room = roomInstance.GetRoomInfo(info.RoomId); return(room?.GetSession(request.Id)?.GetCursor() ?? null); } return(null); }
public UpdateBroadcastStatusNotification GetRoomStatus() { var connectionId = Context.ConnectionId; var instance = ListenerManager.GetInstance(); if (instance.IsListener(connectionId)) { var info = instance.GetConnectionInfo(connectionId); var roomInstance = RoomManager.GetInstance(); var room = roomInstance.GetRoomInfo(info.RoomId); return(room?.GetRoomStatus() ?? null); } return(null); }
public override Task OnDisconnected(bool stopCalled) { var connectionId = Context.ConnectionId; var instance = ListenerManager.GetInstance(); if (instance.IsListener(connectionId)) { var result = instance.RemoveListener(connectionId); result.Wait(); if (!result.IsCanceled && result.Result != null) { try { this.Groups.Remove(connectionId, result.Result).Wait(); } catch (Exception ex) { // Task Cancel Exception } } } return(base.OnDisconnected(stopCalled)); }