유니티 엔진 - 게임 프로젝트/데디케이트 기반 모바일 게임

사용자 인증 - 최종) 클라이언트의 패킷 핸들링

monstro 2025. 12. 2. 21:21
728x90
반응형

- 개요

이번에는 클라이언트에서 서버로부터 수신된 패킷을 핸들링하는 과정을 설계한다

서버로부터 로그인이 승인되면 씬을 전환하고, 로그인이 불허되면 에러 메세지와 함께 버튼을 비활성화한다

패키지의 호환 문제를 방지하기 위해 서버의 구조를 복사 + 붙여넣기하여 클라이언트에서 사용한다

 

- 클라이언트 사이드

1) OnAuthHandler 클래스

 

서버로부터 전송된 로그인을 승인하는 패킷을 핸들링하는 클래스를 추가한다

HandlerRegister 어트리뷰트를 사용하여 OnAuth 패킷 타입에 대한 핸들러로 설정한다

Handle 함수는 위와 같이 구성하여 해당 패킷이 수신되면 을 전환한다

 

2) OnAuthFailedHandler 클래스

 

서버로부터 전송된 로그인을 불허하는 패킷을 핸들링하는 클래스를 추가한다

Action 멤버변수를 사용하여 콜백함수를 호출할 수 있도록 설정한다

Handle 함수는 위와 같이 구성하여 해당 패킷이 수신되면 Action 멤버변수에 바인드된 콜백함수를 호출한다

 

3) UI_Login 클래스

 

Start 함수에 위와 같이 로직을 추가하여 OnAuthFailedHandler 클래스에 대한 콜백함수를 바인드한다

 

 

OnDestroy 함수에 위와 같이 로직을 추가하여 OnAuthFailedHandler 클래스에 바인드된 함수를 제거한다

 

 

ShowLoginError 함수의 로직은 위와 같다

로그인 버튼접속 대기 UI를 비활성화하고 로그인 에러 메세지를 활성화한다

 

4) NetworkClient 클래스

 

PacketRegistry 클래스의 인스턴스HandlerRegistry 클래스의 인스턴스를 멤버변수로 추가한다

 

 

Init 함수에 로직을 추가하여 추가한 멤버변수의 값을 설정한다

 

 

OnNetworkReceive 함수의 로직을 위와 같이 구성하여

서버로부터 수신된 패킷을 분해하여 적합한 패킷의 타입에 따라 Handler의 Handle 함수를 호출한다

 

 

ResolvePacket 함수의 로직은 위와 같다

인자로 받은 패킷 타입의 INetPacket 인스턴스를 생성하고 생성한 인스턴스를 역직렬화하여 반환한다

 

 

ResolveHandler 함수의 로직은 위와 같다

인자로 받은 패킷 타입의 Handler 인스턴스를 생성하고 생성한 인스턴스를 반환한다

 

- 최종 실행 결과

 

728x90
반응형