问题标签 [node.js-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 回答
527 浏览

ruby - 正确使用套接字和/或赛璐珞::IO

我有一个Pinoccio 微控制器(非常棒,试试吧)。微控制器为其服务器打开一个套接字。我正在一个 Ruby 应用程序中编写 TCP Socket 服务器,我将在其中使用Celluloid::IO。作为我的向导,我在 Node 中遵循这个实现,称为pinoccio-server

我写了一些测试代码,尝试与 Pinoccio 微控制器通信。我可以毫无问题地读取它,但是当我将数据写回套接字时,我永远不会得到我期望的行为。这是代码,有人可以告诉我我是否在滥用 Celluloid::IO 或套接字?

https://gist.github.com/roder/ab211f2f58ad6c90a3a9

0 投票
1 回答
152 浏览

node.js - 在节点js中计算数据字节

我有一个大小为 500 MB 的 vhd(磁盘),其中只写入了 10 MB 的数据,然后是空块,最后还有一个 10 MB 的块。

因此,目前的总数据只有 500 MB 中的 20 MB。我试图在 node.js 中找到一个实用程序,以找出数据字节数,但没有成功。

有一个函数fs.fstatSync(file).size,它给出了总大小。

是否有任何实用程序/函数来计算写入的数据?

0 投票
1 回答
13454 浏览

node.js - Node.js - 错误:编写 EPIPE 代码:'EPIPE

我在标准输入流上不断收到 EPIPE 错误,但找不到原因:

这是我的代码:

这是我的输出:

我找不到此错误的原因,我也尝试实施

并且从 ffprobe(这是一个检查音频/视频文件规格的软件)打印的每一行都标记为 stderr。例如:

标准错误:ffprobe 版本 2.2.4 版权所有 (c) 2007-2014 FFmpeg 开发人员于 2014 年 7 月 2 日 15:07:45 使用 Apple LLVM 版本 5.1 (clang-503.0.40) (基于 LLVM 3.4svn) 配置:-前缀=/usr/local/Cellar/ffmpeg/2.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable- avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype -- enable-libtheora --enable-libvorbis --enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-aacenc --enable-libass --enable-ffplay - -enable-libspeex --enable-libschroedinger --enable-libfdk-aac --enable-libopus --enable-frei0r --enable-libopenjpeg --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5 .1_1/include/openjpeg-1.5 ' libavutil 52. 66.100 / 52. 66.100

标准错误: libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libavresample 1. 2. 0 / 1. 2. 2 0. libavresample / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100

0 投票
1 回答
1360 浏览

json - 使用 Oboe.js、MongoDB 和 Express.js 进行 JSON 流式传输

我正在尝试使用 Oboe.js、MongoDB 和 Express.js 通过 HTTP 进行 JSON 流式传输。

关键是在MongoDB(Node.js 的 mongodb 本机驱动器)中进行查询,将其(一个 JavaScript 数组)通过管道传输到Express.js浏览器中并在浏览器中使用Oboe.js.

我所做的基准streamingblockingMongoDB 查询服务器端和客户端的 JSON 解析进行了比较。

这是两个基准测试的源代码。first number是a1000 queries100 items(分页)的毫秒数10 million documents collectionsecond number括号之间表示解析 MongoDB 结果数组中的第一项之前的毫秒数。

流媒体基准服务器端:

阻塞基准服务器端:

这些结果真的让我感到惊讶,因为我会认为:

  1. Streaming会比blocking每次都快。
  2. Oboe.jsJSON.parse与本机方法相比,解析整个 JSON 数组会更快。
  3. Oboe.jsJSON.parse与本机方法相比,解析数组中的第一个元素会更快。

有人有解释吗?我究竟做错了什么 ?

这也是两个客户端基准测试的源代码。

流式基准测试客户端:

阻塞基准客户端:

提前致谢 !

0 投票
1 回答
1961 浏览

node.js - 解压streams2管道并清空它的正确方法(不仅仅是刷新)

前提

我正在尝试找到正确的方法来过早终止 Node.js 中的一系列管道流(管道):有时我想在流完成之前优雅地中止它。具体来说,我正在处理主要objectMode: true和非本地并行流,但这并不重要。

问题

问题是当我unpipe使用管道时,数据保留在每个流的缓冲区中并被drain编辑。这对于大多数中间流(例如/ )来说可能没问题,但最后一个流仍然会流向其写入目标(例如文件或数据库或套接字或 w/e)。如果缓冲区包含数百或数千个需要大量时间来耗尽的块,这可能会出现问题。我希望它立即停止,即不流失;为什么要在无关紧要的数据上浪费周期和内存?ReadableTransformWritable

根据我走的路线,我收到“结束后写入”错误,或者当流找不到现有管道时出现异常。

问题

优雅地终止表单中的流管道的正确方法是什么a.pipe(b).pipe(c).pipe(z)

解决方案?

我想出的解决方案是 3 步:

  1. unpipe管道中的每个流以相反的顺序
  2. 清空实现的每个流的缓冲区Writable
  3. end实现的每个流Writable

一些说明整个过程的伪代码:

我真的很担心stream._writableState内部bufferlength属性的使用和修改(_表示私有属性)。这似乎是一个黑客。另请注意,由于我是管道,pause因此resume我们不可能(基于我从 IRC 收到的建议)。

我还整理了一个可以从 github 获取的可运行版本(相当草率):https ://github.com/zamnuts/multipipe-proto (git clone,npm install,查看自述文件,npm start)

0 投票
1 回答
3243 浏览

node.js - (Node.js)如何将 stdout.pipe 存储到变量中?

我想获得免费的 -m(linux shell 命令)并使用下面的源代码将其结果存储到变量中:

有什么方法可以将 process.stdout 存储在变量中,请给我一些建议

0 投票
1 回答
43 浏览

node.js - 需要帮助http服务器和客户端服务器

我使用了一个应用程序进行登录、添加朋友和使用 node.js 和 mongoDB 聊天。我在 ec2 实例上安装了 node.js 和 monogoDB。但是,不知道是否需要使用客户端服务器和http服务器?这是我使用的应用程序 https://github.com/1karthik/Node.js_UserLogin_Template 注意:我是 node.js 和 mongoDB 的新手

0 投票
2 回答
1222 浏览

node.js - writeStream - 检测到可能的 EventEmitter 内存泄漏

我正在创建一个写流:

使用async.queue,我正在排队这项工作:

收到此警告: (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.

有没有不使用的好方法来解决这个问题setMaxListeners(0)

节点版本:0.10.29

0 投票
4 回答
5566 浏览

node.js - 如何使用 Node.js 检测客户端互联网断开连接

我将 node.js 用于游戏服务器。

这是我的服务器脚本

==================================================== ==============================================

客户端脚本

当游戏关闭或退出游戏时,服务器会检测客户端断开连接。那是“关闭”功能和“错误”功能正在调用那个时间。

但是当与客户端系统或设备断开互联网连接时,那个时候“关闭”功能或“错误”功能不会被调用。

如何检测这种客户端断开连接

Node.js 服务器未检测到客户端网络断开连接。

请帮助我,如果有人知道解决方案。

0 投票
1 回答
3574 浏览

javascript - 随时随地将文本附加到 node.js 流

fs.createReadStream()用来读取文件,然后将它们传递给响应。

我想在提供 HTML 文件时添加一个小的 Javascript 函数。

我能想到的唯一方法是将文件读入字符串,将文本附加到字符串,然后将字符串流式传输到响应,但我认为可能有更好/更快的方法来做到这一点。

有没有办法让我随时随地将文本附加到文件中?