더북(TheBook)

모든 메시징이 요청-응답의 형식을 취할 필요는 없습니다. 클라이언트는 서버에 어떤 상황을 통보하고, 그 통보에 대한 서버 반응을 굳이 받지 않아도 될 때가 있습니다. 반대로 클라이언트에서 요청을 보낸 적도 없는데 서버에서 능동적으로 통보해야 할 때도 있습니다. 이를 능동적 통보라고 합니다.

게임 서버는 세션을 하나 이상 가지고 있는 상태 기계(state machine)입니다. 그리고 이 세션의 상태는 1인용 게임에서 컴퓨터 안의 세션처럼 시간이 지나면서 변화합니다. 이 변화를 클라이언트에 일정 시간마다 통보해야 할 때도 있습니다. 능동적 통보를 쓰는 대표적인 예입니다.

그림 4-7은 요청-응답 메시징과 능동적 통보가 모두 오가는 예입니다. 플레이어 1이 서버에 “플레이어 2를 때리겠다.”라는 메시지를 보내면, 서버는 플레이어 1에 “플레이어 2가 화났다!”라는 응답을 합니다. 그리고 플레이어 2는 아닌 밤중에 홍두깨처럼 “플레이어 1에게 한 대 맞았다.”라는 능동적 통보를 받습니다.

p193

▲ 그림 4-7 두 클라이언트와 서버 간 상호 작용

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.