PDFKIT не запускает потоковую передачу по http-ответу, пока я не вызову do c .end () - PullRequest
0 голосов
/ 18 марта 2020

Я использую pdfkit для генерации pdf во время выполнения и возвращаю это в ответе http для загрузки. Я могу загрузить файл в конце браузера, но диалог загрузки не открывается сразу. Вместо этого вызывается его ожидание до do c .end. Я думаю, pdfkit не может эффективно обработать поток. Кто-нибудь еще сталкивался с этим? Если да, пожалуйста, руководство.

Вот пример кода, который я пытаюсь

exports.testPdfKit = functions.https.onRequest((request, response) => {
    //create pdf document
    doc.pipe(response);

    response.set('Content-Disposition', `attachment;filename=testpdfstream.pdf`);
    response.writeHead(200, { 'Content-Type': 'application/pdf' })

    const bigText = "some big text"

    for (var i = 0; i < 1000; i++) {
        console.log('inside iteration -',i)
        doc.text(bigText);
        doc.addPage();
    }
    doc.end()
});

Я реализую эту функцию в функциях Firebase, которые используют expressjs для обработки запросов http. Чтобы генерировать большие файлы в моем конце, потоковое вещание является обязательным для меня.

1 Ответ

1 голос
/ 18 марта 2020

HTTP-функции не могут передавать входные или выходные данные функции. Весь запрос доставляется в одном фрагменте памяти, а ответ собирается и отправляется обратно клиенту в одном фрагменте. Максимальный размер обоих - 10 МБ. Не существует обходных путей для этого ограничения облачных функций (но оно помогает улучшить масштабирование системы).

Если вам нужна потоковая передача или веб-сокеты, вам нужно использовать другой продукт, например, механизм приложений или вычисления. двигатель.

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