Tag: 包pipe理器

使用命名pipe道或其他IPC机制向“祖父母”进程发送消息

我有一个node.js过程X产生的孩子,可能会产生孩子,因此X可能有很多孙子。 我想让X给孙子一个代表一个沟通渠道的envvariables,以便孙子可以通过一些IPC机制直接发送他们的祖父信息。 有没有人知道这样做的好方法? 孙子们的进程可能不是Node.js进程,它们可以是任何运行时(Python,Ruby等)。

nodejs和streampipe道

我有一个关于nodejs中的pipe道的问题。 我有一些代码,应该显示当前目录中的文件的列表,但它意外地工作。 const { Transform, PassThrough, Readable } = require("stream"); const fs = require("fs"); const config = {distPath: '.',scanPath: '.'}; let writeStream = process.stdout; let pass = new PassThrough(); fs.readdir(config.scanPath, (err, files) => { files.forEach(file => { let filename = new Readable(); filename.push(file + "\n"); filename.push(null); filename.pipe(pass).pipe(writeStream); }); }); 首先,我知道如何改变代码以进行正确的工作。 我只是想明白为什么这个代码工作如此。 代码很简单,只有一个可写入的stream,循环中的许多可读stream想要通过PassTrough写入数据。 如果我将删除pipe道,所有按预期工作。 我看到当前目录中的文件列表。 但是对于pipe道,所有名称都被复制的次数是目录+ […]

将多个文件传送到一个响应

我试图写两个文件和一些更多的文本到一个响应。 下面的代码只会返回第一个文件和“That's all!” 文本。 var http = require('http'), util = require('util'), fs = require('fs'); server = http.createServer(function(req, res){ var stream = fs.createReadStream('one.html'), stream2 = fs.createReadStream('two.html'); stream.on('end', function(){ stream2.pipe(res, { end:false}); }); stream2.on('end', function(){ res.end("Thats all!"); }); res.writeHead(200, {'Content-Type' : 'text/plain'}); stream.pipe(res, { end:false}); }).listen(8001);

meteor – 检查用户是否以pipe理员身份login(客户端)

我目前正在开发一个需要用户和pipe理员的应用程序。 我现在所做的是,我在客户端上创build一个pipe理员帐户,用户名“admin”和一个默认密码,应该通过accounts-ui进行更改。 我这样做是因为创build一个像这样的用户: Accounts.createUser({ username : 'admin', email : 'test@test.com', password : 'changethispasswordovertheuserinterface', profile : { type : 'admin' } }); 在服务器端对我不起作用。 这意味着我只是在我的client.js创buildpipe理员,只是使用此代码来检查pipe理员是否login。 Template.admin.isAdmin = function () { var currentUser = Meteor.user(); // Is this hackable? if (null !== currentUser) { if ('admin' === currentUser.username) { return true; } } }; 这是处理这个问题的最好方法吗? 而最重要的是,我的网站可以像这样(可以有人伪造)?

最简单的nodejs回应服务器

我正在熟悉nodejs中的stream,我有一个问题: 我有我认为最简单的nodejs“回显服务器”,即一个简单的pipe道回到响应stream,无论它通过请求stream接收的服务器。 它的工作,但有一个警告。 客户端仅在closures提交stream后才接收数据。 这里是服务器代码: var http = require('http') var server = http.createServer(function (req, res) { req.pipe(res); }); server.listen(8000); 这是我如何testing它: 做下面的工作就好了 term1> node server.js& term2> echo 'hello world!'|curl –no-buffer –data-binary @- 'http://localhost:8000' hello world! 但是,它只能工作,因为echo完成后closures其输出文件描述符,也就是说,服务器在客户端完成发送之后才会写任何东西: term2> term2> yes|curl –no-buffer –data-binary @- 'http://localhost:8000' (这里这条线永远卡住) 我希望是yes会填补stream缓冲区很快,所以我会开始看到你回来很快。 不幸的是他们从来没有 这是预期的吗? 我应该如何使用stream/pipe道,以达到预期的效果? 顺便说一下,我不在乎输出是否会以大块的forms返回……我知道这是stream(或底层文件I / O)缓冲魔术的结果。 感谢您的帮助

Node.jsstream对象模式

我试图理解对象stream的概念,尤其是两者的结合。 我正在寻找的用法是pipe道字节stream连同对象stream如: // StringifyStream reads Buffers and emits String Objects // Mapper is really just a classical map // BytifyStream reads String Objects and emits buffers. process.stdin.pipe( StringifyStream() ).pipe( Mapper(function(s) { return s.toUpperCase(); }).pipe( BytifyStream() ).pipe(process.stdout); // This code should read from stdin, convert all incoming buffers to strings, // map those strings to upper […]

如何提供诸如数据库,logging器等依赖关系到底层库?

build立 我正在为分布式应用程序构build基础库。 结构如下: core_project/ lib/ index.js module1.js module2.js … package.json 我的应用程序的许多其他部分将使用这样的库: consumer_project/ node_modules/ core_project/ … app.js package.json 问题 我想要一些常见的依赖关系,比如消费者应用程序提供的DB处理程序。 一旦初始化,我希望所有的核心应用程序模块能够使用这些依赖关系。 尝试解决scheme 我试图在每个核心应用程序模块中创build一个模块初始化函数: core_project / lib / module1.js var cfg = {db: null}; module.exports = { // … 'initModule': function (db) { cfg.db = db; } } 这是我的核心模块索引文件: core_project / lib / index.js var modules = […]

使用Node.js优化缓冲区大小?

我有一种情况,我需要采取一个stream,并把它组装成缓冲区。 我打算编写一个对象转换stream,它将定期input数据,并输出缓冲区对象(其中缓冲区都是相同的大小)。 也就是说,如果我的chunker转换configuration为8KB,并且写入了4KB,那么在输出8KB的Buffer实例之前,它将等待直到写入额外的4KB。 我可以select缓冲区的大小,只要在8KB到32KB的范围内。 有一个最佳尺寸可供select吗? 我很好奇的原因是Node.js文档提到使用SlowBuffer来备份缓冲区,并分配最小8KB: 为了避免在服务器的生命周期中为小块内存分配许多C ++ Buffer对象的开销,Node以8Kb(8192字节)的块分配内存。 如果一个缓冲区小于这个大小,那么它将由父缓冲区对象支持。 如果它大于这个值,那么Node将直接为它分配一个SlowBuffer板。 这是否意味着8KB是一个有效的大小,如果我使用了12KB,将会分配两个8KB SlowBuffers? 还是仅仅意味着最小的有效大小是8KB? 那么简单地使用8KB的倍数呢? 或者,这根本不重要?

使用NPM,Bower等pipe理非包装?

NPM,Bower或任何类似的基于Node.js的框架可以为我的项目下载非“包”吗? 我试图通过像NPM这样的东西下载他们给我(然后忽略他们在我的回购)尽可能保持外部图书馆我的回购。 然而,我经常碰到一些没有package.json或类似东西的东西。 这只是一个固定的文件,一个zip或一个随机文件。 谢谢。

Node – 可读streamstream()覆盖for循环中的前一个stream

我正在尝试使用以下代码将数据集合stream式传输到多个文件: for (var key in data) { // skip if collection length is 0 if (data[key].length > 0) { // Use the key and jobId to open file for appending let filePath = folderPath + '/' + key + '_' + jobId + '.txt'; // Using stream to append the data output to file, which […]