Tag: stream

Nodejs的child_process生成自定义的stdio

我想使用自定义stream来处理child_process.spawn stdio。 例如 const cp = require('child_process'); const process = require('process'); const stream = require('stream'); var customStream = new stream.Stream(); customStream.on('data', function (chunk) { console.log(chunk); }); cp.spawn('ls', [], { stdio: [null, customStream, process.stderr] }); 我得到错误Incorrect value for stdio stream 。 有关于child_process.spawn的文档https://nodejs.org/api/child_process.html#child_process_options_stdio 。 它说stdio选项,它可以采取Stream对象 stream对象 – 将引用tty,文件,套接字或pipe道的可读或可写的stream与subprocess共享。 我想我错过了这个“指”部分。

在Vagrant中安装Node,NPM(以及全球的Grunt和Bower)

我一直在遵循这个要求来安装一些PHP开发的核心依赖关系,但是我需要并且还没有能够工作的一个方法就是安装Node,NPM(然后是全局的Grunt和Bower)到stream浪汉。 我已经看到这样的答案,但它似乎没有完成安装(即我不能安装凉亭和咕噜声)。 有一个通过apt-get的nodejs包,似乎确实安装了Node(我可以从那里安装NPM),但是对于Bower来说,这个版本显得太旧了,所以这就是为什么我回到了手动的方式。 谢谢你的帮助。 更新 这是我的bootstraph.sh文件: #!/usr/bin/env bash echo ">>> Starting Install Script" # Update sudo apt-get update # Install MySQL without prompt sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root' sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root' echo ">>> Installing Base Items" # Install base items sudo apt-get install -y curl wget build-essential python-software-properties python […]

如何pipe道stream在hapi.js回复

我在寻找hapi的parllel方法 // Express + Request exmaple function(req, res){ request('http://example.com/image.png').pipe(res); } 如何在hapipipe道响应? server.route({ method: "*", path: "/api/results/{date}", handler: (request, reply) => { //????reply(?); } });

温斯顿的日志stream如何工作?

Winston文档有一个关于stream式日志的部分,它说: stream式传输允许您从您select的传输中将日志stream式传回。 并给出以下代码示例: // // Start at the end. // winston.stream({ start: -1 }).on('log', function(log) { console.log(log); }); 我读到这一点是,每个新的日志消息添加将被输出到控制台。 {start: -1}configuration指示stream在文件结尾处开始,因此只有新的日志条目被输出。 我期望下面的Node脚本会导致test.log文件的每一行都输出到控制台,然后每隔500ms输出一个新的对象。 var winston = require('winston'); winston.add(winston.transports.File, { filename: 'test.log' }); winston.remove(winston.transports.Console); winston.stream().on('log', function(log) { console.log(log); }); setInterval(function(){ winston.log('info', 'help'); }, 500); 我希望看到像下面的输出: {"level":"info","message":"help","timestamp":"2013-12-10T05:55:15.806Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.307Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.809Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:17.309Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:56:48.316Z"} 实际上发生的事情是,日志工作与File传输一样(该文件每500毫秒获取一个新的日志条目),但没有输出到控制台。 console.log(log)行永远不会被调用。 我错过了一些明显的东西,或者误解了Winston的日志stream的目的?

如何在node.js中将数组值排列为可读stream?

从数组和pipe道值创build可读stream的最佳方法是什么? 我已经看到了使用setInterval的substack的例子 ,我可以实现成功使用0的间隔值,但我迭代了大量的数据和触发gc每次放缓东西。 // Working with the setInterval wrapper var arr = [1, 5, 3, 6, 8, 9]; function createStream () { var t = new stream; t.readable = true; var times = 0; var iv = setInterval(function () { t.emit('data', arr[times]); if (++times === arr.length) { t.emit('end'); clearInterval(iv); } } }, 0); // Create […]

Asterisk + Node.js +浏览器stream媒体

我想build立一个服务,允许用户从他们的浏览器实时听取电话。 我有一些Asterisk的经验,这似乎足够灵活,做我所描述的。 Node.js听起来不错,因为它声称处理并发性,而且,我喜欢JavaScript。 在浏览器中,我认为HTML5audio标签,因为它处理来自stream媒体源的播放,所以播放声音就没有问题。 我的一个同事使用Icecast一起工作了这个概念的演示,但是无法完成。 还有显着的延迟问题。 我的问题是这样的: 我应该如何着手开始呢? 任何帮助表示赞赏! 更新: 我发现了一个演示,讨论在WebSockets上通过后端的SIP代理实现SIP: http://sip-on-the-web.aliax.net/ 一旦我开始运行,下一步就是实现stream媒体。 看起来我应该能够通过一个辅助服务器代理audio输出,通常会传输到SIP客户端,然后将其传输到浏览器。 我想知道为什么这不能在记忆中完成? 然后,随着通话的进行,不需要写入和读取文件。

如何使用gulp注入已安装的Bower软件包的链接到html文件

我做了一个大文件来设置一个前端开发工作环境。 下面是它的工作原理: 该脚本获取bower.json中定义的Bower包,并将它们各自生产文件夹(/ public / js)(/ public / css)中的每个已安装包的主文件js和css输出到/ public文件夹中。 脚本还会启动所有文件,css,js和html文件的监视任务,并且只要将这些文件保存在开发文件夹(/ src)中,它们的/ public对象就会实时更新。 通过这种方式,我只需在Bower本地安装软件包,然后运行这个gulpfile,我将在我的/ public文件夹中准备好生产文件,但是我需要链接它们! 如上所述,我希望脚本根据我决定从Bower安装的软件包,在我的index.html头部中编写指向这些文件的链接。 因此,例如,如果我下载了Bootstrap,我希望脚本自动将htmlstartrap CSS和js文件链接到我的html页面的头部(身体closures标记之前)(理想情况下)。 这是我在github上的脚本,看一下README和gulpfile : 我不知道有什么方法和/或是否有一个吞咽插件来实现,如果有人能指出我正确的方向,我将非常感激。 谢谢。

我如何使用Hapi将数据stream式传输到浏览器?

我试图使用stream发送数据到Hapi的浏览器,但不能指望我们如何。 具体来说,我正在使用请求模块。 根据文档reply对象接受一个stream,所以我试过了: reply(request.get('https://google.com')); 抛出一个错误。 在文档中说stream对象必须与streams2兼容,然后我试着: reply(streams2(request.get('https://google.com'))); 现在,不会抛出服务器端错误,但在浏览器中,请求永远不会加载(使用chrome)。 然后我尝试了这个: var stream = request.get('https://google.com'); stream.on('data', data => console.log(data)); reply(streams2(stream)); 而在控制台的数据输出,所以我知道stream不是问题,而是哈比。 我怎样才能在Hapistream式传输工作?

了解Node.js中的stream

我目前正试图围绕Node的stream。 我想我明白了,但我不确定。 让我感到困惑的是Dominic Tarr的这句话 : stream是节点最好的和最误解的想法, 由于多米尼克绝对是一个聪明的人(我想我比我更聪明),我不确定我是否真正理解了数据stream,或者如果我错过了这一点;-)。 因此,我想解释一下,我是如何理解溪stream并要求你们批准或拒绝的。 我对stream的基本理解是stream是一种将数据从源传输到目标的抽象包装。 有可读可写的stream和可读写的双工stream。 这个想法是抽象出实际的源或目标,以便您可以专注于处理stream而不需要知道您正在处理的实际资源。 你只是访问一个阅读和/或写作stream。 我对Node.jsstream的理解是正确的吗? 基本上,这和.NET中的stream(这是我过去12年左右的背景)是一样的。 如何在.NET中的Node.jsstream与stream不同? 举个例子:如果我想从一个文件或networking资源中读取数据,并不重要,我只是使用一个数据stream抽取实际的数据源,然后从这个数据stream中读取数据。 我甚至可以改变源代码,但是我的stream读代码仍然会以完全相同的方式工作。 它是否正确?

无法使用expressjs将响应传输到客户端

当我使用Nodejs / Expressjs的时候,我很困难的是如何将数据传输回客户端。 我从我的数据库中抓取了大量数据,我正在做大块数据,我想将数据stream传回给客户端,这样我就不必将整个数据集作为json对象存储在内存中然后再发回。 我想数据作为一个文件stream,即我想让浏览器问我的用户如何处理下载的文件。 我以前正在创build一个文件系统写入stream,并将我的数据的内容stream到文件系统,然后完成后,我将文件发送回客户端。 我想消除中间人(在文件系统上创buildtmp文件)并将数据stream传输到客户端。 app.get( '/api/export', function(req, res, next) { var notDone = true; while (notDone) { var partialData = // grab partial data from database (maybe first 1000 records); // stream this partial data as a string to res??? if (checkIfDone) notDone = false; } } ); 我可以调用res.write(“一些string数据”),然后在完成时调用res.end()。 但是,我不是100%肯定,这是实际上响应客户端stream,因为我写。 似乎expressjs正在存储所有的数据,直到我打电话结束,然后发送响应。 真的吗? […]