마스터 서버 연결

마스터 서버에는 현재 실행 중인 방 서버와 이용 가능한 방에 관한 정보가 들어 있습니다. 마스터 서버 연결은 StrixNetwork 인스턴스의 masterSession 멤버로 저장됩니다.

먼저, 인터넷 주소, 포트 등 방 서버에 관한 정보와 이용 가능한 방에 관한 정보를 얻기 위해서는 마스터 서버에 연결해야 합니다.

한동안 아무런 활동이 없으면 마스터 서버 연결이 차단될 수 있습니다. 그러나 마스터 서버가 연결되고 나면 연결 정보는 내부에 저장되며, 필요 시 마스터 서버 연결은 자동으로 복원됩니다.

Strix Server 이용이 끝나면 마스터 서버에서 연결을 해제하면 됩니다.

연결

연결 전에 StrixNetwork 싱글톤의 applicationId 속성이 서버에서 지정한 값으로 설정되어 있는지 확인합니다. 이어서 StrixNetwork 싱글톤에서 ConnectMasterServer() 메서드를 호출하여 연결합니다. 호출할 때는 마스터 서버의 도메인(호스트) 이름이나 IP 주소를 이용합니다.

// 기본 포트 번호
void ConnectMasterServer(string host, StrixNetworkConnectEventHandler connectEventHandler, StrixNetworkConnectFailedEventHandler errorEventHandler)

// 사용자 지정 포트 번호
void ConnectMasterServer(string host, int port, StrixNetworkConnectEventHandler connectEventHandler, StrixNetworkConnectFailedEventHandler errorEventHandler)

참고

Strix Cloud를 이용할 때 애플리케이션 ID는 Strix Cloud가 할당하며, Strix Cloud 애플리케이션의 애플리케이션 대시보드에 표시됩니다. 마스터 서버의 도메인 이름은 대시보드에 [마스터 호스트 이름]으로도 표시됩니다.

Strix Cloud는 항상 기본 포트 번호(아래 참조)를 이용하므로 첫 오버로드를 이용해도 됩니다.

Strix Cloud를 이용할 때 IP 주소를 지정하면 안 됩니다. 서버 인스턴스가 작동하는 동안 IP 주소가 바뀔 수 있기 때문입니다.

이미 연결된 상태에서 다른 hostport 매개변수로 이 메서드를 다시 호출하면 기존 연결이 먼저 차단된 후에 새 연결을 시도합니다.

연결된 후에 필요하면 StrixNetwork 싱글톤에서 masterSession 속성을 통해 마스터 서버 세션을 이용할 수 있습니다.

URL 기반 연결

Strix Unity SDK 버전 1.5.0부터는 ConnectMasterServer의 첫 오버로드가 host 매개변수에 URL 스타일의 스트링뿐만 아니라 원시 IP 주소나 호스트 도메인 이름도 수용합니다.

이 호스트 스트링의 구문은 다음과 같습니다.

[protocol://]address[:port][/path]

여기서

  • 옵션인 protocol은 tcp, udp, ws 또는 wss

  • 필수인 address는 IP 주소 또는 도메인 이름

  • 옵션인 port는 포트 번호

  • 옵션인 path는 서버 구성에서 지정한 스트링

URL 스타일의 프로토콜은 다음과 같습니다.

String

설명

(생략)

host 스트링 전체가 IP 주소 또는 도메인 이름입니다. 즉 port와 path도 생략해야 합니다. 플랫폼의 기본 트랜스포트 프로토콜이 사용됩니다.

tcp://

트랜스포트에 TCP가 사용됩니다.

udp://

트랜스포트에 Reliable UDP가 사용됩니다. (RUDP는 Strix Cloud에서는 이용할 수 없습니다.)

ws://

트랜스포트에 일반 WebSocket이 사용됩니다.

wss://

트랜스포트에 보안 WebSocket이 사용됩니다.

port가 없을 경우, 프로토콜의 기본 포트 번호를 다음과 같이 가정합니다.

사용 중인 프로토콜

포트 번호

TCP

9122

Reliable UDP

9122

일반 WebSocket (ws)

80

보안 WebSocket (wws)

443

참고

보안 WebSocket URL의 기본 포트 번호는 443입니다. 단, Strix Cloud의 마스터 서버는 항상 포트 9122를 이용합니다. WebSocket에서도 마찬가지입니다. Strix Cloud에서 보안 SebSocket을 이용할 때는 포트 번호를 생략할 수 없습니다.

TCP나 UDP를 이용할 때 path는 무시됩니다.

WebSocket 프로토콜이 사용되면 path는 연결 핸드쉐이크에 포함되어 서버로 전송됩니다. path가 생략되면 "/"라고 가정합니다. path는 서버가 예상하는 경로와 일치해야 합니다. Strix Cloud를 이용할 때 서버는 항상 "/"를 예상하므로 호스트 스트링에서는 생략해야 합니다.

예시

  • "000000000000000000000000.game.strixcloud.net": 도메인 이름이 000000000000000000000000.game.strixcloud.net이고 포트가 9122인 서버로 TCP 연결.

  • "tcp://198.51.100.2:8888": 주소가 198.51.100.2이고 포트가 8888인 서버로 TCP 연결.

  • "wss://000000000000000000000000.game.strixcloud.net:9122": 도메인 이름이 000000000000000000000000.game.strixcloud.net이고 포트가 9122인 서버로 빈 경로를 이용하여 보안 WebSocket 연결.

참고

이 WebSocket 프로토콜(일반 또는 보안)은 WebGL 플랫폼용입니다. TCP와 비교해 CPU 이용률과 네트워크 트래픽의 오버헤드가 더 큽니다. WebGL 플랫폼을 대상으로 하거나 WebGL 플랫폼으로 플랫폼 간 매치메이킹을 원하지 않는 한 WebSocket 트랜스포트를 이용하는 것은 권장하지 않습니다.

WebGL 지원에 관한 자세한 사항은 HTML5와 WebGL 클라이언트 만드는 방법을 참조해 주십시오.

Strix Cloud는 TCP와 보안 WebSocket(wss)을 트랜스포트로 지원합니다. Reliable UDP와 일반 WebSocket(ws)은 이용할 수 없습니다.

연결 해제

마스터 서버는 StrixNetworkDisconnectMasterServer() 메서드로 연결을 해제할 수 있습니다.

void DisconnectMasterServer()

연결 해제 후 내부에 저장되어 있던 연결 정보는 사라지며, 마스터 서버에서 작동 중인 함수는 모두 장애를 일으킵니다. 일반적으로, 마스터 서버의 연결 해제는 게임의 멀티플레이어 컨텍스트를 이탈하여 네트워크 연결된 기능을 종료할 때 일어납니다.

상태

마스터 서버 연결의 상태는 StrixNetwork.masterSessionIsConnected 값에 저장됩니다.

bool isConnected = StrixNetwork.instance.masterSession.IsConnected;

마스터 서버 연결이 항상 활성 상태인 것은 아닙니다. SDK가 활동을 모니터링하고 타임아웃으로 연결을 종료하여 리소스를 아낍니다. 단, ConnectMasterServer로 지정된 연결 정보는 내부에 저장되며, 마스터 서버 연결이 다시 필요하게 되면 연결이 자동으로 복원됩니다. 이 프로세스는 사용자 코드에 투명하게 드러나므로 신경쓰지 않아도 됩니다.

masterSession.IsConnected는 실제 연결 상태를 나타냅니다. 즉 활동이 없어 마스터 서버 연결이 차단되면 거짓을 리턴합니다. IsConnected 상태도 신경쓰지 않아도 됩니다.