问题标签 [nodejs-stream]

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 投票
1 回答
629 浏览

node.js - 如何进行实时语音识别 | 谷歌云语音转文本

我正在尝试从我的扬声器转录音频
我正在将声音从扬声器传输到 node.js 文件(https://askubuntu.com/a/850174

这是我的 transcribe.js

但是 Google Cloud Speech-to-Text 在大约 1 分钟内进行流式识别有一个限制。所以我有错误“超过 65 秒的最大允许流持续时间”。

如何将流拆分为静音作为拆分器的块或持续时间为 30 秒的块?

0 投票
0 回答
1826 浏览

javascript - Node.js - 将文件流从一台服务器传送到另一台服务器

我正在尝试使用 Node.js 从远程 URL 获取文件,然后将其发送到另一台服务器(使用两个网站各自提供的 API)。我已经成功地使用fs.createReadStream("file.png"). 然而,远程文件似乎是另一回事:我不能简单地将“ https://website.com/file.png ”放在那里,我需要一个等效的远程文件的 createReadStream 。

显然我可以使用单独的命令在本地下载文件并使用 createReadStream 上传然后删除本地文件,但我希望我的代码高效而不依赖手动下载临时文件,而且这是一个很好的学习体验。因此,我想知道在两个不同服务器之间将文件作为流传输的最简单方法。

此外,如果可能,我想避免使用额外的依赖项,因为我正在编写一个简单的脚本,我不想依赖太多的 npm 包。require("https")我主要依靠require("fs")。我很好奇这是否可以通过一个简单的https.get()调用来实现。

0 投票
1 回答
182 浏览

java - 比较加密的 sha512+salt 密码时出现问题

d5在比较两个加密密码时,会在字符串中添加一个额外的位。

我们使用 sha512 +salt 对密码进行加密,然后将其与数据库中存储的 sha512+salt 值进行比较。

但我们得到一个密码不匹配。当我们检查日志时,我们d5在 append 中看到了一个额外的东西,它不存在于 salt 中。

这是使用控制台时的输出。

d5当我们附加它时会出现一个额外的东西,这会导致错误。

0 投票
1 回答
1975 浏览

javascript - 如何在nodejs上为postgresql数据库编写单元测试

我正在尝试使用 postgresql 为我的 API 编写测试。

似乎测试没有命中正确的数据库以进行响应,或者我的配置可能不适合测试。

我希望测试检查我的令牌并将其视为来自正文的请求,但测试甚至无法识别请求正文(req.body);

请我需要指导。

我的文件如下。测试.js

我的 package.json

我的数据库配置

0 投票
2 回答
2462 浏览

node.js - NodeJS 流不等待异步

我在测试 NodeJS 流时遇到了问题。在运行 stream.pipeline 后,我似乎无法让我的项目等待 Duplex 和 Transform 流的输出,即使它返回了一个承诺。也许我遗漏了一些东西,但我相信脚本应该等待函数返回,然后再继续。我正在尝试的项目中最重要的部分是:

输出应类似于:

任何帮助将不胜感激。谢谢!

注意:我用我的另一个帐户发布了这个,而不是这个是我的实际帐户。为重复道歉。

编辑:我最初将回购私有化,但已将其公开以帮助澄清答案。更多用法可以在feature/inital_system 分支上找到。它可以npm start在签出时运行。

编辑:我把我的自定义流放在这里是为了冗长。我认为我比以前走得更好,但现在得到了一个“空”对象。

0 投票
0 回答
327 浏览

node.js - NodeJS 管道子标准输出响应;输出流的第一个 highWaterMark 字节丢失

我正在编写一些nodejs代码来打开一个文件读取流,将它传递给一个用spawn()制作的孩子,然后将孩子的标准输出传递给响应。我解决了我的问题;我发布这个是为了帮助别人,也是因为我不明白为什么一种方式有效而另一种方式无效。

我的第一次尝试是:

这不起作用,响应中的输出文件总是缺少它的第一个 highWaterMark 字节。如果我删除了 highWaterMark 选项,那么它会丢失它的前 64KB 字节(我猜是默认值)。

我的第二次尝试奏效了:

但为什么?这两次尝试之间究竟有什么区别?stdio 选项文档说我可以传递一个 Stream 对象或“管道”。它还说stdio“用于配置在父进程和子进程之间建立的管道”。所以,我读了这篇文章,并预计两次尝试之间没有区别。我错过了什么?

0 投票
0 回答
77 浏览

javascript - 从流中读取前 X 行排序数据?

Node.js 相对较新。尝试使用流。

我正在寻找一个包含数字(换行符分隔)的大文件并对其进行排序。我已经按照这里的方法(方法#5,实际上在这个线程中引用)对我的文件进行了排序,并试图调整它以从排序的数据中返回前 X 行(var request = 5在下面的代码中仅用于测试)。我想在写入数据后显示这些。

.on('data'无论我将代码放在该部分还是在该部分中,我都无法让它工作.on('exit'。有什么建议么?

我确实在 Stack Overflow 上引用了大量线程,包括这个这个这个关于通过 nodejs 读取特定行,通过 Nodejs读取前两行的线程

最后一个听起来应该是我需要的,但我无法让它在我的代码中工作。

0 投票
2 回答
4160 浏览

javascript - 有人可以解释nodejs中的错误代码是什么(不是状态代码)

我在面试中多次遇到这个问题,但我仍然找不到答案。我已经用谷歌搜索了它,但没有找到确切的答案。请任何人告诉我这个的确切答案。

问题:NodeJs 中的错误代码是什么?

我回答了错误状态代码。但是面试官说,我不是在问状态码。请解释答案。先感谢您。

0 投票
1 回答
711 浏览

node.js - 节点 zlib 增量膨胀

我找到了local file header一个大型 zip 文件的下载流的末尾

  • 指定deflate压缩与
  • 位 3 设置指示压缩数据的长度跟随压缩数据

现在想使用 Node zlib 对数据进行充气,但我无法弄清楚如何将数据输入 zlib 并接收反馈,告诉我放气流何时自动终止。

Node 的 zlib 库是否支持使用 deflate 数据块并返回结果让调用者知道 deflate 流何时结束?

或者这是一件很疯狂的事情,因为这意味着我在 UI 线程上膨胀,而我真正应该做的是保存下载的文件并在下载后使用 NPM 包?嗯..好吧..要么网络比通货膨胀快,在这种情况下,流式通货膨胀会减慢网络(无赖),要么网络比流式通货膨胀慢,所以为什么在流式传输时放气(无论如何我都不知道该怎么做)当我坐在等待网络时,我可以简单地保存到磁盘并重新加载放气..

尽管如此,为了我的启迪,我仍然想知道 Node 是否支持流式通胀。


描述放气标头以及它们如何编码流的长度: https ://www.bolet.org/~pornin/deflate-flush-fr.html


在内存流中: https ://www.npmjs.com/package/memory-streams


好吧,这家伙一直拉到他碰到魔法签名!:) https://github.com/EvanOxfeld/node-unzip/blob/5a62ecbcef6523708bb8b37decaf6e41728ac7fc/lib/parse.js#L152


配置便捷方法的节点代码: https ://github.com/nodejs/node/blob/6e56771f2a9707ddf769358a4338224296a6b5fe/lib/zlib.js#L83 具体:https ://nodejs.org/api/zlib.html#zlib_zlib_inflateraw_buffer_options_callback


呃,看起来节点设置为将解压缩的缓冲区作为一个块返回给回调;看起来节点没有设置为找出放气流的结尾。

https://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callbackThe callback function must be called only when the current chunk is completely consumed.,这是将块传递给 zlib 的地方https://github.com/nodejs/node/blob/6e56771f2a9707ddf769358a4338224296a6b5fe/lib/zlib.js#L358 . 所以没有机会说流被部分消耗了..


但话又说回来...... https://github.com/ZJONSSON/node-unzipper/blob/affbf89b54b121e85dcd31adf7b1dfde58afebb7/lib/parse.js#L161但不是真的。也只是检查魔术信号:https ://github.com/ZJONSSON/node-unzipper/blob/affbf89b54b121e85dcd31adf7b1dfde58afebb7/lib/parse.js#L153


并从 zip 规范:

4.3.9.3 虽然最初没有分配签名,但值 0x08074b50 通常被用作数据描述符记录的签名值。实施者应该知道 ZIP 文件可能会遇到带有或不带有此签名标记数据描述符的情况,并且在读取 ZIP 文件时应该考虑任何一种情况以确保兼容性。

所以看起来每个人都只是在寻找信号。


马克说那是不行的……所以不要那样做。并且知道如果您使用 NPM 库来解压缩,那么库很有可能正在这样做。我认为,要正确地做到这一点,需要从 zlib API 文档中了解这一点:https ://zlib.net/manual.html

Z_BLOCK 选项有助于附加或组合放气流。为了帮助解决这个问题,在返回时 inflate() 总是将 strm->data_type 设置为取自 strm->next_in 的最后一个字节中未使用的位数,如果 inflate() 当前正在解码 deflate 流中的最后一个块,则加上 64,加上 128 如果 inflate() 在解码块结束代码或解码完整标头后立即返回,直到放气流的第一个字节之前。在该块中的所有未压缩数据都已写入 strm->next_out 之前,不会指示块结束。未使用的位数通常可以大于 7,除非 data_type 的第 7 位被设置,在这种情况下未使用的位数将小于 8。每次 inflate() 为所有刷新选项返回时,data_type 的设置都如此处所述,

这似乎表明最终的压缩位不会是字节对齐的。然而,ZIP 规范似乎表明以魔法 sig 开头的标题,每个人都在使用但不应该使用的标题是字节对齐的:https ://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

4.3.9.1 如果设置了通用位标志的位 3,则该描述符必须存在(见下文)。 它是字节对齐 的,紧跟在压缩数据的最后一个字节之后。仅当无法在输出 .ZIP 文件中查找时才应使用此描述符,例如,当输出 .ZIP 文件是标准输出或不可查找设备时。对于 ZIP64(tm) 格式的档案,压缩和未压缩的大小各为 8 个字节。

deflate 流的结尾怎么可能不是字节对齐,但下面的数据描述符是字节对齐的?

有没有很好的参考实现?


使用 Inflate 和 Z_BLOCK 的参考 impl:https ://github.com/madler/zlib/blob/master/examples/gzappend.c


这家伙向后阅读以拉出目录:https ://github.com/antelle/node-stream-zip/blob/907c8876e8aeed6c33a668bbd06a0f79e7a022ef/node_stream_zip.js#L180这有必要吗?

这家伙似乎认为,如果不阅读整个文件以进入目录,则无法膨胀 zip:https ://www.npmjs.com/package/yauzl#no-streaming-unzip-api

我不明白为什么会这样。流描述了它们的长度……Mark 验证它们可以流化。


这是 Node.js 检查的地方Z_STREAM_END

0 投票
1 回答
262 浏览

node.js - 如何使用 koa 生成缓慢的响应?

运行 koa 时,我收到以下警告:

对生成器的支持将在 v3 中删除

我的代码所做的是创建一个缓慢的响应。例如,每 1 秒写入一次响应,持续 30 秒。

HTTP/1.1 200 OK
内容类型:文本/纯文本;charset=utf-8
日期:2019 年 2 月 27 日星期三 21:17:06 GMT
连接:keep-alive
传输编码:chunked

呜呜呜
呜呜
呜呜 ……
_

注意:消息是一一打印的。

如何使用 v3 方式实现上述目标?