데이터 및 메시지 기능 개요
PlanetKit은 미디어 스트림 이외의 데이터나 메시지를 보내고 받기 위한 다양한 기능을 제공합니다. PlanetKit에서 제공하는 데이터 및 메시지 기능의 특징은 아래와 같습니다. 기능별 상세 정보는 링크된 문서를 참고하시기 바랍니다.
기능 | 지원 통화 및 사용자 유형 | 사용 시점 | 사용 예시 |
---|---|---|---|
통화 시작 메시지 | 1대1 통화(발신자, 착신자) | 콜 셋업 | 통화 시작 메시지는 크게 두 가지 방식으로 활용할 수 있습니다. 첫 번째로 발신자와 착신자 간 통화 연결 전에 사용자에게 메시지를 노출하는 용도입니다. 예를 들어 발신자가 통화하려는 목적을 착신자가 통화 수락 전에 보게 할 수 있습니다. 두 번째로 애플리케이션 계층에서 메타데이터로 사용할 수 있습니다. 통화 시작 메시지는 통화 연결 전 발/착신자 간에 주고받을 수 있는 유일한 메시지이기 때문에, 예를 들어 통화 중 발생하는 기능의 호환성 이슈를 해결하는 데 도움이 될 수 있습니다. 호환성 이슈와 관련해 구체적인 사례를 하나 살펴보겠습니다. 통화 중 발/착신 간 호환성이 요구되는 기능 A가 불가피하게 업그레이드됐고, 발신자가 신 버전, 착신자가 구 버전을 사용 중이라고 가정하겠습니다. 이때 착신자가 통화 시작 메시지에 자신이 구 버전을 사용 중이라는 정보를 담아 전송하면 발신자는 상대방이 구 버전임을 인지하고 착신자와의 호환성을 맞출 수 있습니다. 반대로 착신자가 신 버전, 발신자가 구 버전인 경우에는 착신자가 통화 시작 메시지를 보고 발신자와의 호환성을 맞출 수 있습니다. |
앱 서버 데이터 | 1대1 통화(발신자), 그룹 통화 | 콜 셋업 | 앱 서버 데이터는 클라이언트가 애플리케이션 서버로 전송하는 데이터입니다. 주로 애플리케이션에서 통화 관련 모니터링을 하고자 할 때 활용할 수 있습니다. 예를 들어 애플리케이션 버전별 그룹 통화 참여 수를 분석하고 싶다면, 앱 서버 데이터에 애플리케이션 버전을 담아서 전송하도록 설계할 수 있습니다. |
데이터 세션 | 1대1 통화(발신자, 착신자), 그룹 통화 | 콜 셋업 완료 후 | 데이터 세션은 1대1 통화 혹은 그룹 통화 시 같은 그룹 내에서 통화하는 단말 간에 스트리밍 형태의 데이터를 전송할 때 활용합니다. 통화 중 너무 많은 데이터 전송 및 수신이 발생하면 통화 품질에 악영향을 미칠 수 있는데요. 데이터 세션을 사용하면 통화 품질 저하를 최소화하면서 통화 대상자들과 편리하게 데이터를 주고받을 수 있습니다. 애플리케이션은 데이터 타입에 따라 스트림 ID를 정의한 뒤 스트림 ID별로 데이터 전송과 처리를 수행합니다. 이때 데이터 전송 신뢰성 제공 여부와 원하는 데이터 형태(메시지 혹은 바이트)에 따라 네 가지 데이터 세션 유형 중 하나를 선택할 수 있습니다. 예를 들어 전송하려는 데이터의 특성을 고려해 다음과 같이 데이터 세션 유형을 선택할 수 있습니다.
|
짧은 데이터 전송 | 1대1 통화(발신자, 착신자), 그룹 통화 | 콜 셋업 완료 후 | 짧은 데이터 전송을 이용하면 애플리케이션에서 아주 간단하게 통화 상대방들에게 짧은 메시지를 전송할 수 있습니다. 매우 간헐적(예: 최소 30초 간격)으로 혹은 특정 조건 하에서 적은 비용으로 메시지나 데이터를 전송하고 싶다면 짧은 데이터 전송을 활용하세요. 예를 들어 그룹 통화 중 사용자의 상태 메시지(자리 비움/바쁨)를 정해진 형식으로 주기적으로 알리고자 하는 상황에서 유용하게 사용할 수 있습니다. 다만 메시지 길이에 제약이 있기 때문에 긴 메시지를 보내야 한다면 데이터 세션을 사용하는 것을 추천합니다. 또한 내부적으로 트랜잭션을 관리하며 데이터 전송 여부 확인 후 몇 차례 재전송을 시도하기는 하지만, 기본적으로 데이터 전송 신뢰성을 제공하지는 않습니다. |
콘텐츠 공유 | 1대1 통화(발신자, 착신자), 그룹 통화 | 콜 셋업 완료 후 | 콘텐츠 공유는 시간의 흐름에 따라 달라지는 데이터를 통화 상대방들과 공유하고자 할 때 사용합니다. 콘텐츠 공유를 사용해 공유한 데이터가 변경되면 공유 대상자들에게 이벤트가 발생합니다. 공유 대상 데이터는 콘텐츠 공유 유형에 따라 공유 대상자가 각자 갖고 있을 수도 있고(일반 공유), 해당 방에 하나만 존재할 수도 있습니다(독점적 공유, 방 범위 공유). 독점적 공유의 경우 콘텐츠 공유를 요청한 사람만 데이터를 수정할 수 있으며, 방 범위 공유의 경우 모든 그룹방 참여자가 수정할 수 있습니다. 콘텐츠 공유는 데이터가 업데이트된 후 경과한 시간을 정보로 제공합니다. 애플리케이션은 시간 변화에 따른 데이터가 필요할 때 이를 활용할 수 있는데요. 예를 들어 한 참여자가 영상 재생(예: YouTube 같이 보기)을 공유한 뒤 다른 참여자가 뒤늦게 해당 방에 입장했다면, 콘텐츠 공유 기능이 제공하는 경과 시간 정보를 이용해 현재 다른 참여자가 영상의 어느 부분을 보고 있는지 파악해서 어느 시점부터 재생해야 할지 알 수 있습니다. |