-
20250623 개발 일지. 닉네임 변경 기능 버그 수정 및 깃 사용 이슈개발일지/C# 채팅 프로그램 2025. 6. 25. 13:46728x90
점심쯤 옴
# 오늘 할 일
닉네임 변경 후 브로드캐스트 확인 작업, 세션 디스커넥션 후 정리 작업# 닉네임 변경 기능
닉네임 패킷 구조가 브로드캐스트를 생각 안 하고 만들어서 서버 측 패킷에 닉네임이 없다.
닉네임 변경 패킷을 변경 요청한 유저에게만 보내는 중이어서 수정이 필요
닉네임 변경 기능 또한 유저 리스트 문제 처럼 현재 클라이언트 상태에 따라 데이터 표시를 다른 곳에 하면 패킷 데이터를 받기 전 클라이언트 상태가 달라질 경우 올바르지 않은 데이터를 적용할 가능성이 있다. 예로 로비에서 유저리스트를 요청하고 그 사이 다른 방에 들어가 버리는 경우.
생각나는 해결 방법은 패킷에 유저 상태를 추가 또는 전용 패킷의 생성이지만 작업량이 늘어나므로 일단 로비에서만 가능하도록 변경 예정.
wpf 클라이언트, 더미 클라이언트
둘다 로비 입장
wpf는 test1으로 변경
더미는 test2으로 변경
현재 더미 클라이언트의 닉네임 갱신이 안되고 있음
룸매니저가 가지고 있는 유저인포 딕셔너리 유저인포 객체와 서버세션에 캐싱용으로 들고 있는 유저인포 객체가 다르다고 뜬다
-> 당연한 결과였다. 더미 클라이언트의 룸매니저는 처음 S_EnterLobbyAnyUser 패킷을 받을 때 처음 유저인포 객체를 생성하고 서버 세션의 유저 인포는 멤버에 생성자 호출을 해서 서로 다른 객체를 생성했다.
-> 초기화를 제거하고 S_EnterLobbyAnyUser 패킷을 받을 때 같이 세팅하도록 수정# 메모
로비는 채팅 안되도록 구현# 깃 사용 이슈
깃 리버트 사용하다가 작업하던 파일들이 다 날라갔다.
열린 파일들은 ctrl + z으로 어느 정도 다시 살렸다. 커밋하지 않는 상태에서 체크아웃이나 삭제 등을 하게 되면 작업 중인 내용들이 증발한다는 것을 알았다.
# 할 일
세션 디스커넥션 후 정리 작업보다 일단 방 입장 후 채팅부터 진행 결정# 할 일 2
이어 할 작업
WPF UI 자동 갱신 -> 현재 UI 자동 갱신을 객체 자료형에서 사용하려면 INotifyPropertyChanged를 상속받아 구현해야 하는데 protobuf 자료형은 자동 생성된 클래스라서 추가 상속으로 구현하기 힘든 상황# 깃 주소
클라이언트
https://github.com/junhee-park/ChatClient/tree/b6a7619de3e56ccbb9c83a837c26479874320eee
서버
https://github.com/junhee-park/ChatingServer/tree/2ca2de9cf3bb214060acfb70c40b58d8698cf972
728x90'개발일지 > C# 채팅 프로그램' 카테고리의 다른 글
20250625 개발 일지. 방 생성 및 입장 버그 수정 (2) 2025.06.26 20250624 개발 일지. WPF 버튼 학습 및 로비 유저 목록 버그 수정 (0) 2025.06.25 20250620 개발 일지. 버그 수정 및 패킷 설계 고민 (2) 2025.06.24 20250619 개발 일지. 프로토버프 제로카피 게시글 읽기 및 뷰매니저 작성 (0) 2025.06.24 20250618 개발 일지. WPF 작업 및 버그 수정 (0) 2025.06.24