Javascript 如何使用服务器返回nodejs的流(serverjs.io)

Javascript 如何使用服务器返回nodejs的流(serverjs.io),javascript,node.js,Javascript,Node.js,使用 我不知道如何最好地返回流?ctx.res是可写流吗?我想充分利用流(转换而不是将所有内容读入内存)…套接字 我找不到任何文件。有很多关于回流的信息,但不是关于这个。我喜欢使用server.js,因为在其他方面它看起来都很不错。这里是server.js的创建者。抱歉,我花了这么长时间才回答这个问题,我以前没有发现这个问题。虽然我想我以前在别的地方读过 但让我们开始吧,这比我预期的更违反直觉,但并非不可能。你现在: const server=require('server'); 常数fs=要求

使用

我不知道如何最好地返回流?ctx.res是可写流吗?我想充分利用流(转换而不是将所有内容读入内存)…套接字


我找不到任何文件。有很多关于回流的信息,但不是关于这个。我喜欢使用server.js,因为在其他方面它看起来都很不错。

这里是server.js的创建者。抱歉,我花了这么长时间才回答这个问题,我以前没有发现这个问题。虽然我想我以前在别的地方读过

但让我们开始吧,这比我预期的更违反直觉,但并非不可能。你现在:

const server=require('server');
常数fs=要求('fs');
const path=require('path');
const img=path.resolve('../../test/logo.png');
常量流=(读、写)=>新承诺((解析、拒绝)=>{
read.pipe(write).on('error',reject.)。on('end',resolve);
});
服务器(ctx=>{
返回流(fs.createReadStream(img),ctx.res);
});
服务器不能很好地处理流,但它可以很好地处理承诺,所以我们将其全部封装在一个承诺中,当流结束时,该承诺将得到解决

你为什么/怎么用这个?如果您需要的话,我可能会将其添加为一个新的回复类型,因为它似乎很容易添加和测试,同时仍在库的范围内


为了回答您的子问题,
ctx.res
是字面上的express'
res
,但问题是您必须返回一些东西。这就是为什么我要把它包装成一个承诺,只有当它完成流式处理后才会解决。

应该是
(resolve,reject)=>fs.createReadStream(img).pipe(ctx.res).on('end',resolve.)。on('error',reject)
?因此,在错误处理方面。我很确定你是对的,请随意编辑答案/打开问题或进行公关。我会在电脑前修复它。