新手入门,如有错误,欢迎指正~~~
系列文章同步更新於部落格
在整个 RTCPeerConnection 建立连线的步骤中,如果要到正式环境使用的话,必定会遇到网路(NAT)的问题,也就是在进行 SDP offer/answer 前,必须先透过 ICE 选取到适合的 candidate 後才能开始进行的原因。
其 ICE 查找到时确定能连接时 RTCPeerConnection.iceGatheringState 属性就会转为 complete,接续进行 SDP offer/answer 的步骤。
WebRTC 就是透过 ICE 来处理实际网路(NAT)的复杂性。
而网路上有许多文章都讲得不错,在这里只统整主要用途与参考的资料。
为了解决NAT的复杂性,ICE 将会尝试找到连接对方的最佳途径。
而再进行查询时的会有几个步骤:
换句话说:
在使用上,ICE server 的 URL 加进 RTCPeerConnection 参数中(如下):
const ice = {
"iceServers": [
{"url": "stun:stun.l.google.com:19302"},
// {"url": "turn:turnserver.com", "username": "user", "credential": "pass"} //范例
]
};
const peer = new RTCPeerConnection(ice);
范例是使用 google 提供的公用STUN server,而turn server的话google也有提供open source project: coturn 可以参考看看~
为了解决 NAT 的复杂性(如下):
撷取自MDN
很好地呈现了,最终经过 ICE 处理後的样貌。
上述是了解一下ICE(STUN/TURN)的作用,方便实作上遇到问题时能够找到问题点做更深入的研究,
网上蛮多资源再说明ICE(STUN/TURN)相关可供参考:
<<: Day 29 ASP .NET Core 心得 - 使用 VS2019 for Mac.
>>: 第二十八日-MYSQL预存程序 STORED PROCEDURE:来写一个BMI小程序(1)
来部落格看图文并茂文章 补觉鸣诗 所谓的稽核 很多人都会担心做不好就惩处 导致稽核前大家人仰马翻 其...
终於来到弹跳球的最後一部分~ 这篇我们主要就是要讲解倾斜面存在的状况下,程序的撰写方法! 老实说我原...
今天要来运用昨天我们前两天学到的滑鼠互动方式来为我们的弹珠台加上互动操作。 在弹珠台里,球碰到钉子就...
今天跟朋友在讨论《过度努力》时,朋友说自己对「冒牌者效应」这个词的感觉很复杂 他觉得自己的确有这个词...
昨天我们介绍了马可夫模型的基础原理,那麽今天我们接着介绍要怎麽把音乐套用马可夫模型里面。 训练 (T...