2016-06-07 84 views
0

我在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#緩存會有所幫助。

任何建議都會有所幫助!

+0

什麼'線程'你打電話給你的代碼?在一個緊密的循環中運行可能實際上不會給UI時間正確處理您的請求。你能提供一個更完整的例子嗎? – amaitland

+0

我在發送一個塊之前等待了1秒鐘,但結果相同。 –

+0

沒有詳細的示例,就不可能說出發生了什麼。 – amaitland

回答