我正在使用RTC數據通道每隔100ms
(使用超時)在兩個對等端(chrome瀏覽器,一個windows pc或其他mac)之間傳輸數據(大約200kb
)。RTC數據通道的不穩定行爲
由於某種原因,突然無故通常,大約5分鐘後,其中一個對等點停止接收數據,經過一段時間後,另一個對等點也停止接收數據。
經過大量的調試,我發現兩個對端仍在傳輸數據,而從網絡流量分析來看,很明顯另一臺機器正在接收數據,但瀏覽器不會調用channel.onmessage
。我的代碼
部分:
function timepot1(){ // I have cheked, this keeps getting called, no problem here
try {
....
channel.send(JSON.stringify(jsObject));
}catch (err) {
console.log(err);
}
setTimeout(timepot1, 100);
};
有一些已知的錯誤,是造成這一點,還是因爲我大量的數據從兩個同齡人在同一個頻道在同一時間傳送?
EDIT
顯然,我使用兩個datachannels(一個用於在每個方向上的傳輸),當餘改變爲單個信道。它停止工作更快。
這是怎麼回事聽起來很蠢,但是當我清除控制檯(在chrome
瀏覽器)上的瀏覽器數據的接收停止幾乎立即(但誒機還是接收數據)。
我會說這是一個錯誤,我會報告給相應的瀏覽器供應商。 –
同意 - 向Chrome報告。在Firefox中進行嘗試(每晚,也許是一個調試版本),如果是這樣,你可以通過NSPR_LOG_MODULES = datachannel:5,sctp:5,timestamp獲得調試 - 這也可以讓你通過icky將SCTP數據包轉儲到wireshark別名:(tcsh別名):alias log2pcap'grep「SCTP_PACKET」\ !: 1 | text2pcap -D -n -1248 -t「%H:%M:%S」。 - \ !: 2' – jesup