WIL15주차
이번 주 작업
- 클라이언트의 상호작용 가능해진 이후 몬스터 전투 및 플레이어 인식, 이동 등의 테스트 -> 현재 proto 내에서 몬스터의 이동, 생성, 공격 등의 판정을 하고 있다. 서버에선 현재 계속 보내고 있으나 클라이언트 쪽에선 아직 인식을 하지 못하고 있다.
플레이어 인식의 경우 gameloop 내에서 실시간 체크하고 있으며 현재는 한 마리 인식할 때마다 하나의 패킷을 보내고 있으나 이후 몬스터를 리스트 형태로 보내는 방법으로 변경하면 어떨까 하는 의견이 나와 준비해 두었다.
monsterDisCovered() {
//const disCoveredMonsterList = [];
for (const [key, monster] of this.monsters) {
//몬스터가 등록되어 있지 않다면 체크 좀 하자
if (!monster.hasPriorityPlayer()) {
let distance = Infinity;
let inputPlayer = null;
let inputplayerId = null;
for (const [playerId, player] of this.players) {
const betweenDistance = monster.returnCalculateDistance(player);
if (betweenDistance !== -1 && distance > betweenDistance) {
distance = betweenDistance;
inputPlayer = player;
inputplayerId = playerId;
}
}
if (inputPlayer === null || inputplayerId === null) {
continue;
}
monster.setTargetPlayer(inputPlayer);
const monsterDiscoverPayload = {
monsterId: monster.id,
targetId: inputplayerId,
};
//disCoveredMonsterList.push(monsterDiscoverPayload);
const packet = makePacket(
config.packetType.S_MONSTER_AWAKE_NOTIFICATION,
monsterDiscoverPayload,
);
this.broadcast(packet);
//여기서부터 여러 몬스터 리스트에 보낸다는 전제
//여기까지 여러 몬스터 리스트에 보낸다는 전제
}
}
}
- 클라이언트의 부담이 너무 클 것으로 보여 시간이 남을 때마다 이 쪽에서도 클라이언트 구조에 대한 수정을 하는 게 맞는지 봐야 할 것 같다.
면접 준비
- JWT에 대해 설명해주세요. 구체적으로 JWT를 어디서 처리하는지, 어떠한 방식으로 검증하는지, 재발급 방식과 주기는 어떻게 처리하는지, 다른 API 서비스 호출 시 어떻게 잡아서 인증 처리하는지 말씀해주세요.
JWT : json 기반의 인증 토큰으로 사용자 인증 및 정보 전달을 안전하게 처리하는 방식, stateless 상태인 http 등에서 주로 사용한다.
크게 3부분으로 나뉜다.
header | payload | signature |
---|---|---|
토큰의 타입과 해싱 알고리즘을 포함함 | 대부분의 정보가 이 안에 들어 있음. 만료시간 포함, 이 만료시간이 다 되면 해당 토큰은 사용할 수 없게 된다. | 토큰 변조 방지를 위한 확인용 |
처리 순서 : JWT 발급(보통 로그인에서 사용됨) > 검증(토큰을 가지고 있는지 확인할 때 사용함) > 재발급