问题标签 [node-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1371 浏览

javascript - Uint8array 到 nodejs 中的可读流

我正在使用带有角度前端的节点 js api 服务。我有一个功能,我需要将一些文档从谷歌驱动器迁移到天蓝色存储。我已经在 node.js 中实现了 azure blobService交互。我使用 XHR 请求从谷歌驱动器以角度下载文档,将其转换为 Uint8array,然后将其传递给节点 js 服务以上传到 azure。我正在使用blobService.createBlockBlobFromStream()方法上传到 azure。这需要一个可读流作为输入参数。我是节点 js 和节点流的新手。如何将我的 Uint8array 对象转换为可读流?如果不是 Uint8array,我可以使用其他类型来简化转换吗?我已经粘贴了下面的代码。提前感谢所有帮助...

角码

Node.js 代码

0 投票
0 回答
35 浏览

node.js - 在生成过程输出时将其写入响应

我有一个产生大量输出的后台进程。我想在它们可用时将输出发送给客户端。我的期望是客户端将发送一个 HTTP GET/POST 请求,服务器打开一个连接keeps it alive,然后服务器保持流数据可用。

真实世界示例:当您在 AWS/Heroku/GoogleAppEngine 中运行测试或 shell 命令时,它会实时显示输出,就好像该命令在我的本地计算机上运行一样。他们是怎么做到的?


服务器:在此示例服务器中,该进程每秒生成一条消息。


客户端:客户端应该在数据可用时接收数据,即一个接一个。但是输出当然是我所期望的,整个数据被一次收集并发送回客户端。


我对NodeJS很陌生,但我希望也许我可以将某种形式writable stream返回给客户端,并且当数据在服务器端写入此流时,客户端会在其端接收它吗?

0 投票
1 回答
1851 浏览

node.js - 如何通过管道传输到作为缓冲区而不是文件的 Node.js 流?

我一直在到处寻找,所有的例子都导致了fs.createWriteStream这不是我想要的。

我正在使用该archiver程序包,并希望使用管道传输到不是archive.pipe()文件的可写流,而是可以用来发送到S3 存储桶的缓冲区。如何设置可以通过管道传输的缓冲区?s3.putObject

当我运行下面的代码时,我得到“错误:未实现”。

0 投票
1 回答
8839 浏览

node.js - 将流写入缓冲区对象

我有一个从音频源读取的流,我正在尝试将其存储到Buffer. 从我读过的文档中,您可以使用而不是文件路径pipe将流转换为一个。fs.createWriteStream(~buffer~)

我目前正在这样做:

但是当我运行它时,它会抛出一个错误,Path: must be a string without null bytes说明文件系统调用。

如果我误解了文档或遗漏了一些明显的东西,请告诉我!

0 投票
1 回答
123 浏览

javascript - Sails.js 将密钥和数据流式传输到 Angular

我有一个角度前端,它将来自sails 后端(使用sails-mysql 适配器)的数据填充到ui-grid 中。该数据集很大,在页面显示包含任何数据之前需要一段时间才能加载。

我有从风帆启动和运行流式传输的基础知识:

到目前为止,这会将每个单独的数据从模型流式传输到前端。我正在使用 angular-oboe 来消耗这个流:

本质上,数据的节点似乎以相同的顺序出现,所以我只是跟踪我收到了多少节点并以这种方式构建对象。然后我将每个对象推入一个数组中以在 uigrid 中使用。

例如,find() 返回的数据是:

这适用于 angular 和 uigrid。但是通过流我会得到:

这并不理想,尤其是在模型发生变化时。有没有办法发送密钥而不仅仅是值?或者也许从流中发送 JSON?就像是:

谢谢!

0 投票
1 回答
1172 浏览

node.js - Nodejs 中的中间件流水线

我正在编写一个向公共 API 端点发出 API 请求的后端服务。API 的响应以 JSON 格式发送。我正在使用 request.js 进行 API 调用,并将实例 request.Request 返回到任何代码(在本例中,是 Express.js 中的路由处理程序)。路由处理程序只是将 API 调用的响应“管道”回请求路由的客户端。我对上述情况有以下担忧:

  1. 实现实现 Stream 接口的业务逻辑的最佳方法是什么,我可以直接将 API 返回值传递给中间件函数(基本上,在返回值上调用管道方法,并在将中间件流式传输到之前传递各种逻辑的中间件)客户)?

  2. 我知道传递给 Express 中每个路由处理程序的 Express.Response 实例只使用一次,如果它们要作为参数传递给其他函数,则必须重复。与(1)中描述的方法相比,这种方法是否更好?

为了避免混淆讨论,我提供了我正在处理的代码片段(代码没有语法错误,也可以正常运行):

APIConnector.ts:

应用程序.ts

0 投票
1 回答
142 浏览

node.js - 将 PDF 从客户端发送到服务器不适用于 Ubuntu 服务器中的 stream.pipe(res)

我有一个应用程序可以制作 PDF 并使用节点 js 将其发送给客户端。该应用程序在本地运行良好,但是当我将它托管在 Digital Ocean 的 Ubuntu 服务器中时,生成 PDF 的端点无法正常工作

这是将 PDF 发送到客户端的代码:

在客户端,这是我与端点通信的方式

当我在本地运行它时,它可以完美运行: 在此处输入图像描述

但是当我在 Ubuntu Digital Ocean droplet 中托管时,另一个端点工作但生成的 PDF 不工作,它向我显示错误 在此处输入图像描述

我认为这是一个超时问题,应用程序不会等待流完成以在 res 中传输它。

0 投票
1 回答
466 浏览

node.js - 管道调整大小的图像以表达响应将响应头设置为“Content-Length:0”并且响应中没有数据

我正在构建一个虚拟图像生成器来提高我对 Node 和 Express 的理解。我从 URL 中获取尺寸并使用 GM 包来调整它的大小。生成的流通过管道传输到响应中。但是我没有在前端获取数据,当我在 Chrome 的开发工具的网络面板中检查响应选项卡时,我看到“此响应没有可用数据”。有人可以给我一些指示,因为我不确定我可以从哪里开始调试它。

我收到的响应标头如下所示: 在此处输入图像描述

0 投票
0 回答
129 浏览

node.js - process.stdin - 结束和结束事件之间的区别

说到,有人知道和事件process.stdin之间的区别吗?endfinish

看起来像'finished'事件首先被调用,'end'事件随后被触发。这些事件更准确地意味着什么?

双工process.stdin流,因为它触发了两个事件?

0 投票
1 回答
213 浏览

node.js - 确保 promise 在 transformFunction 中得到解决

我正在学习through2sequelize

我的代码:

我试图清楚地表达我的问题。Doc并且Comment是续集模型。我想使用流从数据库中一一读取文档实例并删除每个文档实例上的注释。Comment.findOne并且com.destroy()都会返回承诺。我想为每个解决的承诺doc然后调用cb(). 但是我上面的代码不能工作,在com 被销毁之前,代码已经运行完毕。

如何解决?谢谢

我将上面的代码包装在mocha测试中,比如

但在流完成读取之前,测试存在。