연결 이벤트¶
연결 메서드에 대한 콜백¶
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
싱글톤의 masterSession
과 roomSession
속성을 통해 이용합니다.
이 이벤트의 세부내용은 세션 이벤트을 참조해 주십시오.
예시¶
다음은 연결 이벤트를 이용하는 방법을 예를 들어 설명한 것입니다.
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)
);
}