Очень медленно для передачи «большого» объема данных из расширения Chrome на хост (написанный на C #)

Я использую ChromeNative Messaging API передать DOM страницы моему хосту. Когда я пытаюсь передать небольшую строку из моего расширения на мой хост, все работает, но когда я пытаюсь передать весь DOM (который не такой большой ... всего около 260 КБ), все работает намного медленнее, и я в итоге получаюNative host has exited error предотвращение ответа хоста.

Мой главный вопрос: почему так долго передается сообщение 250KB - 350KB с внутреннего номера на хост?

Согласносайт разработчика:

Chrome запускает каждый собственный узел обмена сообщениями в отдельном процессе и связывается с ним, используя стандартный ввод (stdin) и стандартный вывод (stdout). Один и тот же формат используется для отправки сообщений в обоих направлениях: каждое сообщение сериализуется с использованием JSON, кодировки UTF-8 и ему предшествует 32-битная длина сообщения в собственном байтовом порядке. Максимальный размер отдельного сообщения от собственного узла обмена сообщениями составляет 1 МБ, в основном для защиты Chrome от неправильной работы собственных приложений.Максимальный размер сообщения, отправляемого на собственный узел обмена сообщениями, составляет 4 ГБ.

Страницы, DOM которых я заинтересован в отправке на мой хост, имеют размер не более 260 КБ (а иногда и 300 КБ), что значительно ниже установленного максимума в 4 ГБ.

popup.js

document.addEventListener('DOMContentLoaded', function() {
    var downloadButton = document.getElementById('download_button');
    downloadButton.addEventListener('click', function() {
        chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {
            chrome.tabs.executeScript(tabs[0].id, {file: "getDOM.js"}, function (data) {
                chrome.runtime.sendNativeMessage('com.google.example', {"text":data[0]}, function (response) {
                    if (chrome.runtime.lastError) {
                        console.log("Error: " + chrome.runtime.lastError.message);
                    } else {
                        console.log("Response: " + response);
                    }
                });
            });
        });
    });
});

host.exe

private static string StandardOutputStreamIn() {
    Stream stdin = new Console.OpenStandardInput();
    int length = 0;
    byte[] bytes = new byte[4];
    stdin.Read(bytes, 0, 4);
    length = System.BitConverter.ToInt32(bytes, 0);

    string = "";
    for (int i=0; i < length; i++)
        string += (char)stdin.ReadByte();

    return string;
}

Обратите внимание, я нашел вышеупомянутый метод изэтот вопрос.

На данный момент я просто пытаюсь записать строку в файл .txt:

public void Main(String[] args) {
    string msg = OpenStandardStreamIn();
    System.IO.File.WriteAllText(@"path_to_file.txt", msg);
}
Запись строки в файл занимает много времени (~ 4 секунды, а иногда и до 10 секунд).Объем фактически написанного текста варьируется, но это не более, чем просто объявление верхнего документа и несколько тегов комментариев IE. Весь текст теперь появляется.Этот файл с почти любым текстом имеет размер 649 КБ, но сам документ должен иметь размер всего 205 КБ (когда я его скачиваю). Файл по-прежнему немного больше, чем должен быть (216 КБ, когда он должен быть 205 КБ).

Я проверил мойgetDOM.js Функция, просто загрузив файл, и весь процесс почти мгновенно.

Я не уверен, почему этот процесс занимает так много времени, почему файл настолько велик или почему фактически отправляется только какое-либо сообщение.

Я не уверен, что это как-то связано с десериализацией сообщения определенным образом, если я должен создать порт вместо использованияchrome.runtime.sendNativeMessage(...); метод, или если есть что-то еще, что я пропускаю.

Вся помощь очень ценится! Спасибо!

РЕДАКТИРОВАТЬ

Хотя мое сообщение правильно отправлено ОТ расширения к хосту, сейчас я получаюNative host has exited error до того, как добавочный номер получит сообщение хоста.

Ответы на вопрос(1)

Ваш ответ на вопрос