다음을 통해 공유


피어 그룹에 연결하는 방법

이 항목에서는 피어 그룹화 API를 사용하여 애플리케이션이 피어 그룹에 연결하는 방법을 설명합니다.

피어 그룹 조인

피어 그룹에 가입하려면 PeerGroupJoin을 호출하여 피어의 ID 이름과 초대를 전달합니다(초대의 클라우드 이름이 모호한 경우 선택적 PNRP 클라우드 이름).

성공하면 PeerGroupJoin은 피어 그룹에 대한 핸들을 반환합니다.

피어가 이전에 피어 그룹에 조인한 다음 핸들을 닫은 경우 PeerGroupOpen 을 호출하고 피어 그룹의 이름을 전달하여 피어 그룹을 다시 열어야 합니다. 이 호출은 새 피어 그룹 핸들을 반환합니다.

피어 그룹이 성공적으로 조인되면 피어는 피어 그룹에 직접 연결하고 PeerGroupConnect를 호출하여 상호 작용을 시작할 수 있습니다. 연결한 후 피어는 "온라인"으로 간주됩니다.

애플리케이션이 당시 그룹과 상호 작용하지 않으면 "오프라인"으로 유지될 수 있습니다. 나중에 instance 피어 그룹에 직접 참여하도록 선택하면 PeerGroupConnect에 대한 후속 호출이 온라인 상태가 됩니다. 피어가 피어 그룹에 조인한 후에는 레코드를 피어 그룹에 게시하기 전에 한 번 이상 연결해야 합니다.

연결하지 않고 피어 그룹 열기(오프라인)

종종 애플리케이션을 피어 그룹에 연결하지만 직접 참여하지 않고 레코드 업데이트를 수신 및 게시하지만 데이터 메시지를 보내거나 받지 않을 수 있습니다. 애플리케이션은 PeerGroupCreate, PeerGroupJoin 또는 PeerGroupOpen호출된 직후 이 "오프라인" 상태입니다.

오프라인 애플리케이션은 PeerGroupConnect를 호출하여 언제든지 온라인으로 전환할 수 있습니다. 연결되면 피어 그룹은 이 ID와 연결된 다른 모든 애플리케이션과 이 그룹 공유가 연결을 닫을 때까지 오프라인으로 전환할 수 없습니다.

피어 그룹은 여러 애플리케이션에서 동일한 피어 그룹을 사용할 수 있는 공유 리소스입니다. 동일한 ID에 대해 둘 이상의 애플리케이션과 Windows 사용자가 동일한 피어 그룹을 사용하는 경우 동일한 기본 데이터베이스 및 연결(인접 및 직접)도 공유합니다. 이러한 애플리케이션 중 하나가 PeerGroupConnect를 호출하는 경우 그룹에 참여하는 이 ID/사용자에 대한 다른 모든 애플리케이션도 그룹에 연결됩니다. 그룹이 오프라인 상태인 동안 한 애플리케이션에서 레코드를 추가하면 다른 애플리케이션에서도 레코드를 볼 수 있습니다. 따라서 애플리케이션은 언제든지 온라인 상태가 될 준비가 되어 있어야 합니다.

피어 그룹에 연결(온라인)

그룹에 참여하기 시작하려면 그룹을 만들거나 조인하거나 연 후 PeerGroupConnect 를 호출합니다. 이 상태에서는 PeerGroupOpenDirectConnection을 호출하여 동일한 그룹에 참여하는 다른 피어와 직접 연결을 열 수 있습니다.

연결 시도가 실패했는지 감지하려면 PEER_GROUP_EVENT_CONNECTION_FAILED 이벤트에 등록합니다. 이 이벤트는 그룹화 인프라가 연결할 다른 멤버를 찾을 수 없거나 그룹 데이터베이스가 동기화되기 전에 연결이 실패하고 다른 연결을 설정할 수 없는 경우에 발생합니다.

피어에서 실행되고 동일한 피어 ID를 가진 동일한 그룹에 참여하는 여러 애플리케이션이 오프라인일 수 있지만 애플리케이션 중 하나에서 PeerGroupConnect 를 호출하면 모든 애플리케이션이 온라인 상태가 됩니다.

또한 피어의 한 애플리케이션이 그룹에 연결된 경우 PeerGroupJoin 또는 PeerGroupOpen 을 호출하는 다른 애플리케이션도 즉시 연결됩니다. 애플리케이션이 PeerGroupClose를 호출하는 경우 해당 애플리케이션에 대해서만 핸들이 닫힙니다. 따라서 애플리케이션에서 PeerGroupOpen 에 대한 후속 호출은 새 그룹 핸들을 반환하고, 동일한 그룹에 참여하는 다른 애플리케이션이 여전히 연결된 경우 애플리케이션이 즉시 온라인 상태가 됩니다.

데이터 보내기 및 받기

그룹의 특정 멤버 노드 간에 데이터를 보내고 받으려면 상호 작용하려는 멤버와 직접 연결을 설정해야 합니다. 직접 연결을 설정하는 것은 연결된 그룹에 대한 핸들과 연결하려는 그룹 내의 피어 ID를 전달하는 PeerGroupOpenDirectConnection에 대한 비동기 호출입니다. 이 메서드는 연결 ID를 반환합니다. 호출이 성공하면 피어에서 PEER_GROUP_EVENT_DIRECT_CONNECTION 이벤트가 발생하여 연결 ID의 유효성을 검사합니다.

다른 온라인 피어로부터 직접 연결을 받으려면 PeerGroupRegisterEvent를 호출하여 PEER_GROUP_EVENT_DIRECT_CONNECTION 이벤트에 등록합니다.

직접 연결이 성공적으로 설정되면 애플리케이션은 PeerGroupSendData에 대한 호출로 데이터를 전송하고 유효한 연결 ID를 전달할 수 있습니다. 다중 파트 데이터 전송 순서는 PeerGroupSendData에서 처리됩니다. 그러나 애플리케이션은 이 API 호출에서 반환된 불투명 데이터를 처리하기 위한 적절한 프로토콜 스택을 구현해야 합니다.

직접 연결을 통해 데이터를 수신하려면 애플리케이션이 PeerGroupRegisterEvent를 사용하여 PEER_GROUP_EVENT_INCOMING_DATA 이벤트에 등록해야 합니다. 이벤트 처리기는 불투명 데이터를 가져오고 정렬하고 애플리케이션에 전달하는 역할을 합니다. 이 데이터는 등록된 이벤트에 대한 핸들을 사용하여 PeerGroupGetEventData 를 호출하여 이벤트 처리기 내에서 가져옵니다.

PeerGroupCloseDirectConnection을 호출하고 PeerGroupOpenDirectConnection에 대한 이전 호출에서 얻은 연결 ID를 전달하거나 PEER_EVENT_GROUP_DIRECT_CONNECTION 대한 이벤트 데이터에서 수신하여 직접 연결을 닫습니다.