PartyManager::ConnectToNetwork
네트워크에 연결하려는 비동기 시도를 큐에 넣습니다.
구문
PartyError ConnectToNetwork(
const PartyNetworkDescriptor* networkDescriptor,
void* asyncIdentifier,
PartyNetwork** network
)
매개 변수
networkDescriptor
PartyNetworkDescriptor*
연결을 설정할 네트워크와 연관된 설명자입니다.
asyncIdentifier
void*
선택 사항
완료 상태 변경을 이 호출과 연결하는 데 사용할 수 있는 선택적 앱 정의 포인터 크기의 컨텍스트 값입니다.
network
PartyNetwork**
선택적 라이브러리 할당 출력
선택적인 출력 네트워크 개체입니다.
반환 값
PartyError
c_partyErrorSuccess
새 네트워크에 연결하는 비동기 작업이 시작되었거나 오류 코드가 발생한 경우입니다. 이 메서드가 실패하면 관련 상태 변경 내용이 생성되지 않습니다. 사용자가 읽을 수 있는 형식의 오류 코드는 GetErrorMessage()를 통해 검색할 수 있습니다.
비고
이 메서드는 로컬 디바이스에서 투명한 클라우드 릴레이 서버로의 보안 DTLS 연결을 협상하고 설정하여 networkDescriptor
과(와) 관련된 네트워크에 연결하려는 비동기 시도를 큐에 넣습니다. 비동기 작업이 완료되면 성공 또는 실패를 나타내는 PartyConnectToNetworkCompletedStateChange가 제공됩니다. 성공 시 로컬 디바이스는 투명한 클라우드 릴레이 서버에 대한 연결을 설정합니다. 실패 시 PartyNetworkDestroyedStateChange가 생성됩니다. 다른 디바이스는 표시되지 않으며, 하나 이상의 로컬 사용자가 PartyNetwork::AuthenticateLocalUser()를 통해 성공적으로 인증될 때까지 로컬 디바이스는 원격 디바이스에 표시되지 않습니다.
디바이스가 네트워크에 성공적으로 연결되면 PartyNetwork::AuthenticateLocalUser()를 통해 네트워크에 인증해야 합니다. 디바이스가 네트워크에 연결되어 있지만 1분 이상 인증되지 않은 경우 디바이스의 연결이 끊어지고 PartyNetworkDestroyedStateChange가 생성됩니다. 이는 PartyNetwork::RemoveLocalUser()를 호출한 후 디바이스가 인증되지 않았거나 인증이 손실되지 않았는지에 관계없이 발생합니다.
이 메서드는 PartyNetwork::CreateInvitation() 및 PartyNetwork::CreateEndpoint()와 같은 비동기 네트워크 작업을 수행하는 데 즉시 사용할 수 있는 출력으로 network
을(를) 선택적으로 제공합니다. 이러한 비동기 작업은 연결이 완료될 때까지 내부적으로 큐에 대기되며, 이 시점에서 처리됩니다. 이 network
은(는) 제공된 PartyConnectToNetworkCompletedStateChange에서 제공되며, 제공된 asyncIdentifier
에 완전히 연결됩니다.
이 작업은 CreateNewNetwork()를 통해 생성되었을 때 네트워크 구성에 지정된 대로 네트워크에 연결된 장치의 한계에 도달한 경우 PartyStateChangeResult::NetworkLimitReached에 지정된 PartyConnectToNetworkCompletedStateChange::result와 비동기적으로 실패합니다.
반환이 성공적이면 이 메서드는 GetNetworks() 이전에 반환된 모든 배열에 대한 메모리를 무효화합니다. 이 메서드는 새 네트워크를 배열에 동기적으로 추가합니다.
StartProcessingStateChanges() 배열에 대한 메모리도 무효화합니다. 반환된 network
개체는 PartyNetworkDestroyedStateChange가 생성되고 개체를 참조하는 모든 상태 변경 내용이 FinishProcessingStateChanges()에 반환될 때까지 유효합니다.
실패 시 다시 시도
ConnectToNetwork()가 비동기적으로 실패하면 StartProcessingStateChanges()에서 PartyConnectToNetworkCompletedStateChange가 제공되며 결과를 나타냅니다. 제공된 PartyStateChangeResult에 따라 작업이 지연된 후 다시 시도될 수 있습니다.
결과 | 다시 시도 동작 |
---|---|
InternetConnectivityError | 10초 이하의 작은 지연으로 다시 시도하세요. 앱의 경우 자동으로 다시 시도하는 것보다 오류를 사용자에게 즉시 표시하는 것이 더 적합할 수 있습니다. |
NetworkLimitReached | 자동으로 다시 시도하지 마세요. 대신 사용자에게 메시지를 표시하고 사용자가 다른 시도를 시작할 때까지 기다립니다. |
NetworkNoLongerExists | 다시 시도하지 마세요. |
VersionMismatch | 다시 시도하지 마세요. |
FailedToBindToLocalUdpSocket | 이 결과는 라이브러리가 PartyOption::LocalUdpSocketBindAddress 옵션에 지정된 로컬 UDP 소켓에 바인딩할 수 없음을 의미합니다. 타이틀은 라이브러리의 인스턴스를 정리하고, PartyOption::LocalUdpSocketBindAddress 옵션을 유효한 사용 가능한 바인딩 주소로 업데이트하고, 라이브러리를 다시 초기화해야 합니다. |
요구 사항
헤더: Party.h
참고 항목
PartyManager
PartyConnectToNetworkCompletedStateChange
PartyNetworkDestroyedStateChange
PartyNetworkConfiguration
PartyManager::CreateNewNetwork
PartyManager::GetNetworks
PartyNetwork::AuthenticateLocalUser
PartyNetwork::RemoveLocalUser
PartyNetwork::CreateInvitation
PartyNetwork::RevokeInvitation
PartyNetwork::CreateEndpoint
PartyNetwork::LeaveNetwork