이번 실습에서는 Cloud 기반의 IDE 인 Cloud9 을 활용하여 간편하게 원격 개발환경을 구축하고 FleetIQ 예제를 위한 클라이언트를 생성해보겠습니다.
Cloud9 을 통해 별다른 로컬 환경의 변경이나 개발 환경 구성의 어려움 없이 일관성있는 온라인 통합 개발 환경을 구축하실 수 있습니다.
Cloud9 콘솔에 접속합니다. (https://ap-northeast-2.console.aws.amazon.com/cloud9/home/product)
환경의 이름을 FleetIQClient 로 지정합니다.
Cloud9 개발 환경이 만들어지는 것을 기다립니다. 몇 분 내에 작업은 완료됩니다.
Cloud9 IDE 가 실행되면, client.py 파일을 만들어주고, 다음 소스 코드를 붙여넣습니다.
import socket
import boto3
client = boto3.client('gamelift')
# Claim Game Server
def claim_game_server():
pass
#
response = claim_game_server()
#endpoint = response['GameServer']['ConnectionInfo']
endpoint = ''
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((endpoint, 5000))
while True:
data = input("SEND(TYPE q or Q to Quit):")
if(data == 'q' or data == 'Q'):
client_socket.send(data.encode())
client_socket.close()
break
else:
client_socket.send(data.encode())
data = client_socket.recv(512).decode()
print("RECEIVED:", data)
print("Socket Closed... END")
이 코드는 간단한 TCP 에코 클라이언트를 구현한 모습입니다. 하지만 자세히 보시면 서버의 엔드포인트가 지정되어있지 않습니다. 이제 이 부분을 구현해보겠습니다.
def claim_game_server():
response = client.claim_game_server(
GameServerGroupName='GameServerGroups'
)
print(response)
return response
함수의 리턴 값은 할당된 게임 서버의 엔드포인트 정보를 갖습니다. 기존 소스에 주석을 제거하고 endpoint 에 응답값을 다음과 같이 할당합니다.
endpoint = response['GameServer']['ConnectionInfo']
import socket
import boto3
client = boto3.client('gamelift', 'ap-northeast-2')
# Claim Game Server
def claim_game_server():
response = client.claim_game_server(
GameServerGroupName='GameServerGroups'
)
print(response)
return response
#
response = claim_game_server()
endpoint = response['GameServer']['ConnectionInfo']
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((endpoint, 5000))
while True:
data = input("SEND(TYPE q or Q to Quit):")
if(data == 'q' or data == 'Q'):
client_socket.send(data.encode())
client_socket.close()
break
else:
client_socket.send(data.encode())
data = client_socket.recv(512).decode()
print("RECEIVED:", data)
print("Socket Closed... END")
실습에서는 FleetIQ API 구동을 학습하기 위한 목적으로 간단한 TCP 연결만을 구성하지만, 코드가 간단하지만 보다 복잡한 게임 로직으로 실습을 진행하셔도 좋습니다.
이제 이전에 만들었던 서버와 클라이언트가 어떻게 상호작용하는지 알아보도록 하겠습니다.