[webrtc] 強制使用tcp傳輸


以前筆記,整理

 

webrtc默認使用UDP傳輸,但是也可以通過TCP傳輸。

使用tcp傳輸,需要服務器中轉,turnserver,licode,janus之類的服務器。

1. 如果使用turnserver的話,只需要客戶端保留 relay&&tcp類型的candidate,其他都拋棄即可

2. 如果使用的是licode,janus之類的服務器的話,默認是不支持tcp的。

因為它們底層使用都是libnice這個開源的ICE庫,libnice在比較新的版本中才支持tcp的

所以需要自己編譯新版本的libnice,然后重編譯服務器

參考libnice的文檔 https://nice.freedesktop.org/libnice/NiceAgent.html#NiceAgent--ice-tcp

 

3. libnice新版也支持tcp 心跳檢測

libnice 0.1.8以后支持keepalive-conncheck
gboolean keepalive = TRUE;
g_object_set(G_OBJECT(agent), "keepalive-conncheck", keepalive, NULL);

就是超時時間有點長。

最大超時時間在 time.h中
total_timeout = initial_timeout * (2^(max_retransmissions + 1) - 1);
20s-80s左右超時NICE_COMPONENT_STATE_FAILED


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM