Как загрузить входящий файл и предотвратить обратное давление при отправке файлов через каналы данных WebRT C с использованием потоков? - PullRequest
0 голосов
/ 18 июня 2020

Я создаю приложение для обмена файлами с WebRT C и Node.js. Это приложение командной строки, поэтому HTML не вызывается. Я читаю файл как поток и отправляю его, а затем загружаю файл на стороне получателя. Вот как я буду писать код отправителя:

        // code taken from https://github.com/coding-with-chaim/file-transfer- 
        // final/blob/master/client/src/routes/Room.js

        const reader = stream.getReader();

        reader.read().then(obj => {
            handlereading(obj.done, obj.value);
        });

        // recursive function for sending out chunks of stream
        function handlereading(done, value) {
            if (done) {
                peer.write(JSON.stringify({ done: true, fileName: file.name }));
                return;
            }

            peer.write(value);
            reader.read().then(obj => {
                handlereading(obj.done, obj.value);
            })
        }

На стороне получателя я буду конвертировать входящий файл (поток) в Blob, но люди в сети говорят, что возникнет проблема обратного давления если размер файла слишком велик. Как мне написать код загрузки файла, чтобы избежать обратного давления, чтобы он не треснул sh сторону приемника из-за переполнения буфера? Или должен быть другой подход к загрузке файла?

1 Ответ

1 голос
/ 19 июня 2020

Вы хотите прослушать onbufferedamountlow после установки bufferedAmountLowThreshold

Вы захотите поместить все свои logi c на стороне отправителя, получатель не у меня нет никакого контроля. Я думаю, что MDN - ваш лучший ресурс, я не нашел ни одной хорошей статьи по этому поводу.

У меня есть пример в Pion здесь , но он находится в Go. Та же концепция, но, надеюсь, полезная!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...