//请求TurnServer
int32_t yang_ice_requestTurnServer(YangIceSession *session,void* rtcSession,yang_turn_receive receive,char* remoteIp,int32_t remotePort){
//如果turnconn为空,则调用yang_ice_initTurn初始化turnconn
if(session->turnconn==NULL){
yang_ice_initTurn(session);
}else if(!session->isTurnAllocated){//如果isTurnAllocated为false,则返回error
return ERROR_RTC_TURN;
}
int32_t count=0;
int32_t maxWaitCount=100;
//添加Peer,传入对端的ip地址和端口号,表示跟此对端通过中继服务器进行音视频传输。
session->turnconn->addPeer(&session->turnconn->session,session->uid,rtcSession,receive,remoteIp,remotePort);
session->isTurnReady=yangfalse;
//while循环最大2秒,直到isReady,说明可以向对端传输音视频数据了
while(count<maxWaitCount&&!session->turnconn->isReady(&session->turnconn->session)){
yang_usleep(20000);
count++;
}
//如果超过最大等待次数,返回error
if(count>=maxWaitCount) {
session->isTurnReady=yangfalse;
return ERROR_RTC_TURN;
}
//否则说明已经ready了,返回OK
session->isTurnReady=yangtrue;
return Yang_Ok;
}
metartc5_jz源码阅读-yang_ice_requestTurnServer
最新推荐文章于 2024-10-17 20:07:53 发布
文章详细描述了一个名为YangIceSession的类中的函数,用于通过TurnServer与远程IP进行音视频传输。函数首先初始化Turn连接,然后尝试添加对端,等待其准备就绪,如果超时则返回错误。
摘要由CSDN通过智能技术生成