연결 이벤트

연결 메서드에 대한 콜백

Strix는 이벤트 기반 비동기 메서드로 연결을 합니다. 연결 기능에 대한 호출은 요청 즉시 리턴되며, Strix는 성공 또는 실패 메시지를 비동기로 수신합니다.

연결 기능은 (여러 다른 기능과 마찬가지로) 이벤트 핸들러가 필요합니다. 이 핸들러는 연결 요청이 성공하거나 실패하면 호출됩니다.

참고

이벤트라고 부르지만, 성공과 실패 콜백은 일반적으로 메서드 인수를 통해 전달되는 C# 델리게이트입니다.

구독 이벤트

Strix는 성공과 실패 콜백 외에 구독 가능한 이벤트도 몇 가지 제공합니다.

연결에는 다음 네 가지 이벤트가 있습니다.

이벤트

핸들러 타입

인수 내 이용 가능한 속성

Connected

StrixNetworkConnectEventHandler

session: 새 세션.

ConnectFailed

StrixNetworkConnectFailedEventHandler

session: 다시 연결하지 못한 세션(해당할 경우)
cause: 장애의 원인.

Closed

StrixNetworkCloseEventHander

session: 닫힌 세션.

ErrorThrown

StrixNetworkErrorEventHandler

session: 오류가 발생한 세션.
cause: 장애의 원인.

이 4개 이벤트는 C# 이벤트로, 구독할 때는 += 연산자(또는 add 액세서)를, 구독취소할 때는 -= 연산자(또는 delete 액세서)를 사용할 수 있다는 뜻입니다. 모두 SoftGear.Strix.Unity.Runtime.Session.AbstractSession 추상 클래스에 정의되어 있으며 StrixNetwork 싱글톤의 masterSessionroomSession 속성을 통해 이용합니다.

이 이벤트의 세부내용은 세션 이벤트을 참조해 주십시오.

예시

다음은 연결 이벤트를 이용하는 방법을 예를 들어 설명한 것입니다.

public void ConnectedEventSample(string applicationId, string host, string playerName)
{
    StrixNetwork.instance.roomSession.Connected += args => {
        Debug.Log("Room session connection has been established with the following host: "
            + args.session.host
            + ":" + args.session.port
        );
    };

    StrixNetwork.instance.applicationId = applicationId;
    StrixNetwork.instance.ConnectMasterServer(
        host: host,
        connectEventHandler: _ => {
            StrixNetwork.instance.JoinRandomRoom(
                playerName,
                handler: joinRoomResult => { },
                failureHandler: joinRoomError => {
                    StrixNetwork.instance.CreateRoom(
                        new RoomProperties {
                            name = "New Room",
                            capacity = 4,
                        },
                        new RoomMemberProperties {
                            name = playerName
                        },
                        createRoomResult => { },
                        createRoomError => Debug.LogError(
                            "Could not join nor create a room."
                            + " Reasons: " + joinRoomError.cause
                            + "; " + createRoomError.cause
                        )
                    );
                });
        },
        errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
    );
}

오류 코드

ConnectFailedErrorThrown 이벤트 핸들러는 인수에서 cause 속성을 수신합니다. Exception 타입이지만 오류 코드를 받기 위해 ErrorCodeException으로 다운캐스트해도 됩니다. 특정 오류 코드를 불러와 분석하는 방법은 오류 처리 섹션을 참조해 주십시오.