ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20250630 개발 일지. 방 퇴장 테스트, 방 삭제 구현 및 버그 수정
    개발일지/C# 채팅 프로그램 2025. 7. 1. 12:58
    728x90

    점심쯤 옴

    # 방 퇴장 테스트 다시 진행
    퇴장 시 더미 클라이언트에서 문제 로그 표시됨 -> 떠난 방에 유저 본인이 그대로 남아있음 -> 떠난 방에 유저 본인을 없앨 이유가 없었음. 어차피 퇴장할 경우 로비로 가서 새로운 방 목록을 가져오기 때문에 참조를 제거하고 사라질 방 객체 같은 방에 있던 채팅 클라이언트에도 남아있음.


    서버 상태는 제대로 반영되어 있음 -> 서버 패킷 반환도 제대로 이루어지고 있는데 유저 정보에 유저 아이디가 없는 경우가 있음.


    클라이언트 뷰매니저 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
Designed by Tistory.