簡體   English   中英

如何為nodejs(serverjs.io)返回帶有服務器的流

[英]How to return a stream with server for nodejs (serverjs.io)

使用https://serverjs.io/documentation/reply/

我不知道如何最好地返回流? ctx.res 是可寫流嗎? 我想充分利用流(轉換而不是全部讀入內存)...套接字?

我找不到任何文檔。 有很多關於返回流但不是這樣。 我想使用 server.js 因為在所有其他方面它看起來都不錯。

server.js 的創建者在這里。 抱歉花了這么長時間才回答我之前沒有找到這個問題。 雖然我想我以前在別處讀過它?

但是讓我們開始吧,這比我預期的要違反直覺,但並非不可能。 你現在有代碼示例

const server = require('server');
const fs = require('fs');
const path = require('path');

const img = path.resolve('../../test/logo.png');
const stream = (read, write) => new Promise((resolve, reject) => {
  read.pipe(write).on('error', reject).on('end', resolve);
});

server(ctx => {
  return stream(fs.createReadStream(img), ctx.res);
});

服務器不能很好地與流一起工作,但它可以與 Promises 完美地工作,所以我們把它全部包裝在一個承諾中,當流結束時它會被解析。

為什么/你如何使用它? 如果您打開一個常見案例的問題,我可能會將其添加為新的回復類型,因為它似乎很容易添加和測試,同時仍在庫的范圍內。

要回答您的子問題, ctx.res字面意思是 express' res ,但問題是您必須返回一些東西。 這就是為什么我將它包裝在一個只有當它完成流式傳輸時才會解決的承諾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM