2016-02-13 84 views
3

我正在使用WebRTC數據通道發送JSON數據。似乎工作正常的小數據包。但是,我試圖發送一個更大的包(網頁的HTML,base64編碼,所以也許幾百KB),它從來沒有讓它到另一端。WebRTC數據通道 - 最大數據大小?

是否有最大尺寸?

回答

6

我認爲該規範沒有對最大數據量說一句話。在實踐中,16 KB是最大的。看看這個blog post,尤其是throughput/packet size圖。這個結果已經通過實驗獲得,並且是允許webrtc實現之間最大兼容性的一個。

我已經設法在兩個Firefox實例之間發送256 KB的數據包(如果內存正確地處理我的話,它的容量更大)。這是大約一年前,從那時起,實施可能已經改變了它的最大數據量。

如果你想發送大於16K的數據包,你必須首先對它們進行分段。碎片必須作爲應用協議的一部分來實施。

+0

Argh。該死!有關如何實現碎片的任何建議? –

+1

好吧,最簡單的方法是將一個大的內存緩衝區分成16K(甚至8K只是爲了安全起見)塊,然後將塊,索引和塊的總數作爲消息發送。在接收端,您知道組塊的總數,您只需等待,直到您收到來自數據通道的這些數量的消息。如果你想變得非常有趣,你甚至可以使用DC的無序模式。而且我會使用輸入數組而不是base64編碼。二進制數據由webrtc支持,恕我直言,沒有理由浪費時間和空間來進行base64編碼。 –

+0

非常感謝您的幫助。去試試這個:) –