metartc5_jz源码阅读-yang_ice_initIce

//初始化ice,感觉这个逻辑跟谷歌官方的webrtc正好是相反的逻辑,正常应该县判断Host能不能通,不通在Stun,Stun也不通则走Turn中继。
void yang_ice_initIce(YangIceSession *session){
	//根据candidateType进行初始化
	switch(session->candidateType){
		//Host则什么也不做
		case YangIceHost:
			break;
		//Stun的话发起StunServer请求,请求失败的话降级为Host
		case YangIceStun:
			if(yang_ice_requestStunServer(session)!=Yang_Ok){
				yang_error("request stun server fail,change to host");
				session->candidateType=YangIceHost;
			}
			break;
		
		//Turn的话初始化Turn,turn初始化失败的话,发起StunServer请求,请求失败的话降级为Host
		case YangIceTurn:
			if(yang_ice_initTurn(session)!=Yang_Ok) {
				yang_error("request turn server fail,change to stun");
				session->candidateType=YangIceStun;
				if(yang_ice_requestStunServer(session)!=Yang_Ok){
                    yang_ice_closeTurn(session);
					yang_error("request stun server fail,change to host");
					session->candidateType=YangIceHost;
				}

			}
			break;

	}
}

你可能感兴趣的:(metartc5_jz源码阅读,实时音视频,音视频,p2p,c语言)