-
20250630 개발 일지. 방 퇴장 테스트, 방 삭제 구현 및 버그 수정개발일지/C# 채팅 프로그램 2025. 7. 1. 12:58728x90
점심쯤 옴
# 방 퇴장 테스트 다시 진행
퇴장 시 더미 클라이언트에서 문제 로그 표시됨 -> 떠난 방에 유저 본인이 그대로 남아있음 -> 떠난 방에 유저 본인을 없앨 이유가 없었음. 어차피 퇴장할 경우 로비로 가서 새로운 방 목록을 가져오기 때문에 참조를 제거하고 사라질 방 객체 같은 방에 있던 채팅 클라이언트에도 남아있음.
서버 상태는 제대로 반영되어 있음 -> 서버 패킷 반환도 제대로 이루어지고 있는데 유저 정보에 유저 아이디가 없는 경우가 있음.
클라이언트 뷰매니저 ShowRemovedUser 함수는 userid 기준으로 제거하는데 유저 아이디가 없어서 지울 게 없어 문제가 생긴 것 같음-> ShowRemovedUser 메소드는 방 아이디와 유저 아이디를 기준으로 뷰 모델인 Rooms에서 유저 아이디 기준으로 삭제 진행을 하는데 이미 방에 존재하는 채팅 클라이언트는 방에 있기 때문에 Rooms 뷰 모델의 갱신을 하지 않고 ChatUsers 뷰 모델만 갱신해서 문제가 생김
-> ShowRemovedUser 메소드에 인수와 룸매니저의 현재 룸 아이디를 비교하여 같을 경우 방 유저 목록에서 삭제하도록 수정
# 버그 수정
채팅에서 닉네임 출력되도록 수정
이전 방 재 입장 시 채팅 로그 남아있던 문제 수정
# 방 삭제 기능 작업 및 버그 수정 진행
방 삭제 패킷 전송했는데 화면 전환이 안됨 -> 서버에도 현재 방 번호가 표시됨
서버 로그
세션 매니저 유저 목록
UserId: 0, Nickname: User_0, CurrentRoom: 1
UserId: 1, Nickname: User_1, CurrentRoom: 1
룸 매니저 로비 유저 목록
룸 매니저 방 목록
RoomId: 1, RoomName: test, RoomMasterUserId: 0
UserId: 0, Nickname: User_0
UserId: 1, Nickname: User_1
Press 'Q' to display all users' current locations or any other key to continue...
q현재 모든 유저가 어디에 있는지 표시
세션 매니저 유저 목록
UserId: 0, Nickname: User_0, CurrentRoom: 1
UserId: 1, Nickname: User_1, CurrentRoom: 1
룸 매니저 로비 유저 목록
UserId: 0, Nickname: User_0, CurrentRoom: 1
UserId: 1, Nickname: User_1, CurrentRoom: 1
룸 매니저 방 목록
Press 'Q' to display all users' current locations or any other key to continue...
방은 제거되고 유저도 로비로 이동되었지만 현재 방 번호가 1번으로 되어 있음 -> 현재 방 정보 초기화 누락 -> 버그 수정 했지만 채팅 클라이언트 부분 갱신이 안됨
채팅 클라이언트 본인은 이전 닉네임으로 표시되는 버그 -> 클라이언트 핸들러에서 닉네임 변경하는 로직 누락. 더미 클라이언트 뷰 매니저에서만 변경하고 있었음
문제 있던 해당 유저가 다시 방에 입장했더니 더미 클라이언트 AddUserToRoom 메서드에서 System.ArgumentException: 'Key already exists in map (Parameter 'key')' 에러 발생 -> 로비에 있는 유저에게만 문제가 발생하는 듯 -> 클라이언트 측 방 유저 목록 제거하는 기능의 핸들러( 방 삭제, 방 퇴장 )들 확인 필요
채팅 클라이언트 방 입장 시 유저 채팅 목록에 추가되지 않음더미 클라이언트 로그
[SEnterLobbyAnyUser] size: 14
ShowLobbyUserList
User ID: 0, Nickname: User_0
[SLeaveRoom] size: 48
ShowRoomList
Room ID: 1, Name: test, Master: 1
- User ID: 1, Nickname: User_1
ShowLobbyUserList
User ID: 0, Nickname: User_0
ShowLobbyScreen
방에서 떠나는 당사자는 SEnterLobbyAnyUser, SLeaveRoom 패킷을 받음
더미 클라이언트는 다시 들어가도 에러가 발생하지 않음
# 내일 할 일
채팅 클라이언트로 방 재입장 시 발생하는 에러 해결728x90'개발일지 > C# 채팅 프로그램' 카테고리의 다른 글
20250702 개발 일지. 하트비트 기능 개발 및 버그 수정 (0) 2025.07.03 20250701 개발 일지. 방 삭제 기능 버그 수정 및 구현 완료 (0) 2025.07.02 20250627 개발 일지. 에러 및 버그 수정, 퇴장 기능 작업 (0) 2025.06.30 20250626 개발 일지. 채팅 클라이언트 채팅 표시 버그 수정 (0) 2025.06.27 20250625 개발 일지. 방 생성 및 입장 버그 수정 (2) 2025.06.26