본문으로 건너뛰기
Version: 7.1

짧은 데이터

LINE Planet은 통신 중에 피어에게 제한된 크기의 데이터("짧은 데이터")를 보낼 수 있는 API를 제공합니다. 이 페이지에서는 통화 중에 짧은 데이터를 보내고 받는 방법을 설명합니다.

지원 통화 유형지원 SDK 버전
1대1 통화, 그룹 통화(컨퍼런스)모든 버전

공통 사항​

통화 유형에 관계없이 짧은 데이터 전송에는 다음 사항이 적용됩니다.

크기 제한​

짧은 데이터를 보내는 메서드는 데이터 자체와 함께 데이터 유형을 인자로 받습니다. 데이터 유형 및 데이터의 최대 크기는 다음과 같습니다.

  • 데이터 유형: 100바이트(null 종료 문자 포함)
  • 데이터: 800바이트

처리율 제한​

초당 1회의 전송만 허용됩니다.

짧은 데이터 전송 결과 얻기​

LINE Planet에서 여러 번 재시도한 후에도 데이터 전송이 실패하는 경우가 있습니다. 결과 핸들러 콜백을 사용하면 비동기적으로 데이터 전송 결과를 확인할 수 있습니다.

1대1 통화​

1대1 통화에서는 다음과 같이 짧은 데이터를 보내고 받을 수 있습니다.

짧은 데이터 전송하기​

통화 상대방에게 짧은 데이터를 전송하려면 PlanetKitCall::SendShortData()를 사용하세요.

void SendShortDataExample(PlanetKit::PlanetKitCallPtr pCall, const std::wstring& wstrType, const std::string& strData)
{
pCall->SendShortData(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

수신한 짧은 데이터 처리하기​

상대방은 ICallEvent::OnReceivedShortData를 통해 짧은 데이터를 수신할 수 있습니다.

class CallEventListener : public PlanetKit::ICallEvent {
public:
...

void OnReceivedShortData(PlanetKit::PlanetKitCallPtr pPlanetKitCall, PlanetKit::ShortDataParamPtr pShortDataParam) override {
// This is called when short data is received from the peer.
const wchar_t* pType = pShortDataParam->GetType();
const void* pData = pShortDataParam->GetData();
unsigned int nSize = pShortDataParam->GetSize();

std::string receivedData((const char*)pData, nSize);
std::wcout << L"Received short data: type=" << pType << L", data=";
std::cout << receivedData.c_str() << std::endl;
// Write your own code here to handle the received data.
}
}

그룹 통화​

그룹 통화에서는 특정 피어 또는 모든 피어에게 짧은 데이터를 보낼 수 있습니다.

특정 피어에게 짧은 데이터 전송하기​

특정 피어에게 짧은 데이터를 전송하려면 PlanetKitConference::SendShortData()를 사용하세요.

void SendShortDataToSpecificPeerExample(PlanetKit::PlanetKitConferencePtr pConference, PlanetKit::UserIdPtr pPeerId, const std::wstring& wstrType, const std::string& strData)
{
pConference->SendShortData(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), pPeerId, nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData to specific peer succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

모든 피어에게 짧은 데이터 전송하기​

모든 피어에게 짧은 데이터를 전송하려면 PlanetKitConference::SendShortDataToAllPeers()를 사용하세요.

void SendShortDataToAllPeersExample(PlanetKit::PlanetKitConferencePtr pConference, const std::wstring& wstrType, const std::string& strData)
{
pConference->SendShortDataToAllPeers(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData to all peers succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

수신한 짧은 데이터 처리하기​

피어는 IConferenceEvent::OnReceivedShortData를 통해 짧은 데이터를 수신할 수 있습니다.

class ConferenceEventListener : public PlanetKit::IConferenceEvent {
public:
...

void OnReceivedShortData(PlanetKit::PlanetKitConferencePtr pPlanetKitConference, PlanetKit::ShortDataParamPtr pParam) override {
// This is called when short data is received from a peer in the conference.
PlanetKit::UserIdPtr pSenderId = pParam->GetPeerID();
const wchar_t* pType = pParam->GetType();
const void* pData = pParam->GetData();
unsigned int nSize = pParam->GetSize();

std::string receivedData((const char*)pData, nSize);
std::wcout << L"Received short data from peer: type=" << pType << L", data=";
std::cout << receivedData.c_str() << std::endl;
// Write your own code here to handle the received data.
}
}

짧은 데이터 전송 실패 이유​

결과 핸들러 콜백으로 전달되는 ESendShortDataFailReason 열거형을 통해 짧은 데이터 전송 결과와 실패 이유를 확인할 수 있습니다. 가능한 실패 이유는 다음과 같습니다.

값설명
PLNK_SEND_SHORT_DATA_FAIL_REASON_NONE짧은 데이터가 성공적으로 전송되었습니다.
PLNK_SEND_SHORT_DATA_FAIL_REASON_INVALID_PARAMETER하나 이상의 입력 파라미터가 유효하지 않습니다(예: 데이터 크기가 0이거나 데이터 포인터가 NULL).
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATA_TYPE데이터 타입이 허용된 최대 길이를 초과합니다(null 종료 문자 포함 100바이트 초과).
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATA데이터 페이로드가 허용된 최대 크기를 초과합니다(800바이트 초과).
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_FREQUENT짧은 데이터가 허용된 것보다 더 자주 전송되었습니다(처리율 제한 초과). 초당 1회의 전송만 허용됩니다.
PLNK_SEND_SHORT_DATA_FAIL_REASON_TIMEOUT타임아웃으로 인해 전송이 실패했습니다.

관련 API​

짧은 데이터 전송과 관련된 API는 다음과 같습니다.

공통​

열거형​

1대1 통화​

메서드​

이벤트​

그룹 통화​

메서드​

이벤트​