PKHCommon 클래스

RegistPacketHandler

public void RegistPacketHandler(Dictionary<int, Action<ServerPacketData>> packetHandlerMap)
{            
    packetHandlerMap.Add((int)PACKETID.NTF_IN_CONNECT_CLIENT, NotifyInConnectClient);
    packetHandlerMap.Add((int)PACKETID.NTF_IN_DISCONNECT_CLIENT, NotifyInDisConnectClient);

    packetHandlerMap.Add((int)PACKETID.REQ_LOGIN, RequestLogin);                                            
}

NotifyInConnectClient

public void NotifyInConnectClient(ServerPacketData requestData)
{
    MainServer.MainLogger.Debug($"Current Connected Session Count: {ServerNetwork.SessionCount}");
}

NotifyInDisConnectClient

public void NotifyInDisConnectClient(ServerPacketData requestData)
{
		// 세션 아이디와 해당 유저 가져오기
    var sessionID = requestData.SessionID;
    var user = UserMgr.GetUser(sessionID);
            
    if (user != null)
    {
		    // 해당 유저의 방 번호 가져오기
        var roomNum = user.RoomNumber;

				// 방 번호가 유효하면
        if (roomNum != PacketDef.INVALID_ROOM_NUMBER)
        {
		        // 방을 떠난걸 알려주기 위한 패킷 생성
            var packet = new PKTInternalNtfRoomLeave()
            {
                RoomNumber = roomNum,
                UserID = user.ID(),
            };
						// 직렬화해서 패킷이 바이너리 데이터로?
            var packetBodyData = MessagePackSerializer.Serialize(packet);
            var internalPacket = new ServerPacketData();
            internalPacket.Assign(sessionID, (Int16)PACKETID.NTF_IN_ROOM_LEAVE, packetBodyData);

						// 서버에서 수신된 패킷을 처리하고 클라이언트에게 전파?
            ServerNetwork.Distribute(internalPacket);
        }

        UserMgr.RemoveUser(sessionID);
    }
                        
    MainServer.MainLogger.Debug($"Current Connected Session Count: {ServerNetwork.SessionCount}");
}

<aside> 🐿️ 패킷 아이디를 헤더에서 확인하고 Internal 패킷이면 내가 나에게 보낸 패킷이고 또는 패킷 아이디 목록에서 클라이언트가 서버에 보낸 패킷이면 처리하고 둘 다 아니면 이상한 외부에서 온 패킷이므로 Drop 처리하는 코드 넣기

</aside>