以前筆記,整理
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
