Как уменьшить время ожидания в Firefox с помощью fetch response.body.getreader ()? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь передавать данные с низкой задержкой и небольшими пакетами с сервера в браузер, используя fetch() и ReadableStream.Следующий код работает к моему удовлетворению на Safari и Chrome, но не на Firefox.Я думаю, что проблема заключается в том, что стратегия очереди ReadableStream, возвращаемая response.body.getReader() в Firefox, отличается от стратегии Chrome или Safari.Мой сервер отправляет порцию данных один раз в секунду (размером примерно 100 байт), которые Chrome и Safari отдают моему javascript-коду с низкой задержкой (безусловно, менее 1 секунды), тогда как Firefox, по-видимому, накапливает несколько фрагментов (примерно 500 байт), прежде чем выдатьданные, в один большой кусок, в мой код.

Есть ли способ заставить Firefox вести себя как Chrome и Safari?В частности, как я могу уменьшить его задержку, в идеале, чтобы он давал моему коду куски, как только он их получает?

function do_stuff() {
    console.log("creating request");
    fetch("readable-stream").then((response) => {
        console.log("got response", response);

        const reader = response.body.getReader();

        my_thingie(reader).then(_=>{
        }).catch(x => {
            console.log("catch 2 wrong:",x);
            state.stream_status = 2;
        });
    }).catch(x => {
        console.log("catch 1 wrong:",x);
    });
}

async function my_thingie(reader) {
    while(true) {
        console.log("result 1");
        const {done, value} = await reader.read();
        console.log("result 2", done, value);
        if (done) {
            break;
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...