Я использую 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 # кэша поможет.
Любое предложение было бы полезно!
На какой' Thread' вы называете свой код? Запуск в узком цикле может не дать время UI правильно обрабатывать ваши запросы. Можете ли вы представить более полный пример? – amaitland
Я пробовал его с 1 секундой ожидания перед отправкой куска, но результаты были такими же. –
Без детального примера невозможно сказать, что происходит. – amaitland