2016-06-07 5 views
0

Я использую CEF # с C# Windows Form application. В основном он загружает веб-сайт, который создает соединение WebRTC, для отправки файла через его datachannel между одноранговыми узлами. Сторона C# считывает фрагмент 10KiB из файла, а затем передает его на JavaScript, чтобы отправить его с помощью datachannel (когда он прибыл, попросите следующий фрагмент ...).C# приложение CEF # отправка файла

Моя проблема в том, когда я пытаюсь отправить файл, процесс отправки останавливается после отправки около 1MiB. Я пытался отправлять файлы с различными размерами, без ошибок на C# или стороне JS, все останавливается после ~ 1MiB.

Мне кажется, что есть предел (~ 1MiB в целом), когда я передаю данные с CEF # на JavaScript.

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

На какой' Thread' вы называете свой код? Запуск в узком цикле может не дать время UI правильно обрабатывать ваши запросы. Можете ли вы представить более полный пример? – amaitland

+0

Я пробовал его с 1 секундой ожидания перед отправкой куска, но результаты были такими же. –

+0

Без детального примера невозможно сказать, что происходит. – amaitland

ответ

0

http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=14096

Там, кажется, предельный размер 800MB. Может управлять, чтобы увеличить размер около 1.5gigs, хотя с помощью этого редактирования:

»... может увеличить этот размер с --js-флаг --max-старого пространства-SIZE = 2000 . Это, по-видимому, увеличивает его примерно до ~ 1,5 концертов »