Пример #1
0
        private void UserEnter(User user, Room room, bool enter)
        {
            // 입장 기록 저장
            EnterHistory enterHistory = new EnterHistory {
                User = user, Room = room, enter = enter, created_at = DateTime.Now
            };

            db.EnterHistory.Add(enterHistory);

            // 입장 여부에 따라 user_count 변경
            room.user_count     += enter ? 1 : -1;
            room.user_count      = room.user_count <0 ? 0 : room.user_count> room.user_limit ? room.user_limit : room.user_count;
            db.Entry(room).State = EntityState.Modified;
            db.SaveChanges();
        }
Пример #2
0
        public async Task JoinRoom(int user_id, int room_id)
        {
            Room         room           = getRoom(room_id);
            User         user           = getUser(user_id);
            EnterHistory recent_history = db.EnterHistory
                                          .Where(a => a.user_id == user_id && a.room_id == room_id)
                                          .OrderByDescending(a => a.created_at)
                                          .FirstOrDefault();

            await Groups.Add(Context.ConnectionId, room.Id.ToString());

            // 나간 기록이 있다면 입장 알림
            if (recent_history == null || recent_history.enter == false)
            {
                UserEnter(user, room, true);
                SendGroup(room_id, user_id, user.hello_message);
            }
        }