概述
metaRTC支持P2P的ICE不完善,老版本只实现了stun和turn,缺乏交互式连接实现,新版本重构ICE部分,实现了交互式连接,全面兼容ICE-FULL/ICE_LITE规范。
metaRTC ICE 流程
收集候选地址(Candidate)
- 通信前先搜集本地多个网卡的IP和端口号(canidate)
- 搜集stun的candidate以及对应的公网IP和端口号。
- 访问TURN server得到所有中继candidate以及公网IP和端口。
- 搜集webrtc tcp candidate
- 搜集Tcp连接的TURN中继candidate
通过上述的步骤,可以得到这个candiate是哪个网卡的,是否存在NAT,可以得到是否是relay。搜集到candidate后需要给这些candidate分配优先级。通常来说turn的candidate优先级最低。
很多路由对udp不太友好,udp被路由屏蔽时metaRTC ICE会智能切换到webrtc tcp或者turn tcp连接。
交换候选地址
通过MQTT/WEBSOCKET等交换candidate信令,建立local candidate队列和remote candidate队列。文章来源:https://www.toymoban.com/news/detail-409519.html
连接检测
将local candidate和remote candidate配组(pair),进行多组连接检测,连接检测结束后取的可用连接组合开始webrtc通信。文章来源地址https://www.toymoban.com/news/detail-409519.html
metaRTC ICE 回调接口
typedef struct{
void* context;
void (*onIceStateChange)(void* context,int32_t uid,YangIceCandidateState iceState);
void (*onConnectionStateChange)(void* context, int32_t uid,YangRtcConnectionState connectionState);
void (*onIceCandidate)(void* context, int32_t uid,char* sdp);
}YangIceCallback;
到了这里,关于metaRTC新版本重构ICE全面兼容ICE协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!