有一个这样的需求: 收到用户请求后,读取第三方服务器的视频文件返回数据流给用户使用 说明:第三方服务器内的视频或其他文件用户不能直接访问,我们可以访问,而我们自己的服务器上也不能保存视频内容,我们有点像鉴权功能 我们想采用这样的方式解决: 读取视频数据到内存后直接转发给用户使用,比如视频链接为sourceUrl,我们使用原生node写了如下原型
const http = require('http')
const request = require('request');
http.createServer(async(req,res)=>{
await request.get(sourceUrl).pipe(res);
}).listen(3000)
这样是样访问localhsot:3000是能展示视频的,也能播放。
但是如果使用koa2 编写如下代码就死活不行
const Koa = require('koa');
const request = require('request');
const app = new Koa();
app.use(async (ctx) =>{
await request.get(sourceUrl).pipe(ctx.res);
//或者 await request.get(sourceUrl).pipe(ctx.response);
})
app.listen(3000)
问题来了,koa2如何返回数据流的,应该把输入传到哪个输出对象上或是用什么方法。初学初学,大神莫怪。
另外,就上面说到的需求(数据不对外公开访问,鉴权服务器和最终使用者者不能存贮内容)有没有更多的方案,好用的工具推荐。