Skip to content

metaRTC datachannel programming guide

yangrtc edited this page Dec 18, 2025 · 1 revision

Compilation Settings

In the include/yang_config.h file

//Set Yang_Enable_Datachannel to 1, the default is 1
#define Yang_Enable_Datachannel 1

channel message

enum{
	YANG_DATA_CHANNEL_DCEP = 50,
	YANG_DATA_CHANNEL_STRING = 51,
	YANG_DATA_CHANNEL_BINARY = 53,
	YANG_DATA_CHANNEL_STRING_EMPTY = 56,
	YANG_DATA_CHANNEL_BINARY_EMPTY = 57
};

sending a message

YangPeerConnection* rtcConn;
YangFrame frame;

char* str="datachannel test";
yang_memset(&frame,0,sizeof(YangFrame));
//Send text message YANG_DATA_CHANNEL_STRING
//Send binary message YANG_DATA_CHANNEL_BINARY
frame.mediaType=YANG_DATA_CHANNEL_STRING;
frame.payload=(uint8_t*)str;
frame.nb=strlen(str);
ret = rtcConn->on_message(&rtcConn->peer,msgFrame);`

receiving a message

typedef struct {
	 void* context;
	 void (*receiveAudio)(void* context,YangFrame *audioFrame);
	 void (*receiveVideo)(void* context,YangFrame *videoFrame);
    //datachannel callback
	 void (*receiveMsg)(void* context,YangFrame *videoFrame);
}YangReceiveCallback;

// Callback function // Get msgFrame
void yang_receiveMsg(void* user,YangFrame *msgFrame){
   int32_t msgSize;
   uint8_t* msg;
   if(user==NULL) 
      return;   
   if(msgFrame->mediaType==YANG_DATA_CHANNEL_STRING){
    msg=msgFrame->payload;
    //handle msg
  }else if(msgFrame->mediaType==YANG_DATA_CHANNEL_BINARY){
    msg=msgFrame->payload;
    msgSize=msgFrame->nb;
    //handle msg
  }	
}

Clone this wiki locally