我在C#Windows窗體應用程序中使用CEF#。基本上它會加載一個創建WebRTC連接的網站,通過它的數據通道之間的文件發送文件。 C#端從文件中讀取一個10KiB的塊,然後將其傳遞給JavaScript以將其與數據通道一起發送(當到達時,請求下一個塊...)。C#應用程序CEF#文件發送
我的問題是當我嘗試發送一個文件發送過程停止後發送約1MiB它。我嘗試發送各種大小的文件,在C#和JS端沒有錯誤,在〜1MiB之後停止。
當我將數據從CEF#傳遞給JavaScript時,似乎有一個限制(整體大約1MiB)。
1.讀文件(SendNextChunk,C#):
if (chunk_data = fs.Read(buffer, 0, current_chunk_size) > 0)
{
string buffer_base64 = Convert.ToBase64String(buffer);
browser.ExecuteScriptAsync("rtc.send('file', '" + buffer_base64 + "')");
}
2. Datachannel發送塊,其他對等端接收它(在JavaScript)和調用(C#):
if (message == "file_ask") SendNextChunk(message);
else MergeChunk(message, "C:\\test");
3.合併抵達塊,我剝離代碼,所以它只是要求下一個塊(MergeChunk,C#):
browser.ExecuteScriptAsync("rtc.send('file', 'file_ask')");
在「rtc.send」函數上方,將JSON格式的兩個參數發送給另一個對等體。
是否有從CEF#傳遞給JavaScript的參數的大小限制?
UPDATE:
也許清除JS或CEF#緩存會有所幫助。
任何建議都會有所幫助!
什麼'線程'你打電話給你的代碼?在一個緊密的循環中運行可能實際上不會給UI時間正確處理您的請求。你能提供一個更完整的例子嗎? – amaitland
我在發送一個塊之前等待了1秒鐘,但結果相同。 –
沒有詳細的示例,就不可能說出發生了什麼。 – amaitland