保持产生进程的Node.js结果

最近我一直在使用Node.js,并且遇到问题,find一种方法来跟踪返回到请求的subprocessstdout的结果。 我有一个文件中的主机名列表,我的应用程序读取文件,使用一个简单的正则expression式从文件中一次一行地拉动主机名,使用拆分。 然后我创build一个主机名数组。 然后,对于数组中的每个主机名我build立一个参数string,并使用该参数string产生一个进程,但是,我没有办法从进程内访问计数variables“我”,我无法find一种方式来跟踪结果返回到input。 我的程序应该采取每个主机名称,并使用“subprocess”调用snmp,然后它应该创build和arrays{主机名:“snmp-result”},最后一次完成后,将数组保存到文件。 我正在使用此程序尝试从networking设备中提取序列号。 我已经重写了这个代码大约5次,我甚至用一个函数嵌套在spawn过程中,而不是一个on数据事件发射器,但是我很茫然。 相关代码如下: var spawn = require('child_process').exec; var split = require('split'); var fs = require('fs'); var snRe = '"(.*?)"'; var devRe = "(junos\\-([az]|[0-9])+\\-([az]|[0-9])+$)"; var devices = []; var output = []; var outfile = fs.createWriteStream('vri.txt',{'flags':'w'}); var infile = fs.createReadStream('devices',{flags: 'r', encoding: 'utf8'}) var spawnCmd = "/usr/local/bin/snmpwalk -v2c -c public" var […]

node.js http.get中的Cache-Control

我使用http.get()向节点发出请求,这一切都正常,但在某些情况下,我得到一个过时的版本的页面(有一个date字段,使我可以确保)。 这种行为真的是不一致的,我可以一时做正确的事情,接下来做错事情…这是我的要求: var options = {host:'host.com',path:urlPath,headers:{'Cache-Control':'no-cache'}} http.get(options, function(res){ //JSON.parse result and check the date, sometimes 17/1, sometimes 10/1 }); 请求头有什么问题吗? 我试过'max-age = 0'而不是'no-cache',无济于事,有没有人有一个想法,这可能来自哪里? 在我的浏览器中,我一直得到最后一个版本,这里有点迷路,帮助!

JavaScript:DOM相关代码的最佳实践是否同时执行服务器和客户端?

背景 从2年前开始(使用Batman.js和node.js )我开始尝试在服务器和客户端上执行相同的DOM代码。 这是希望有SPA(单页面应用程序),可以使用pushState呈现,并在页面已经呈现为search引擎优化和卓越的用户体验路线访问(没有页面“闪光灯”与页面后的SPA渲染元素相关联负荷)。 这通常涉及将模块封装在if语句中,该语句检查模块是在window中执行还是被require.js使用,或者作为node.js等中的模块。 客户端+服务器SPA的当前实现 Rendr和Ezel都试图帮助客户端+服务器代码共享和DOM渲染function到骨干SPA。 Ezel在Backbone模型/集合中具有魔力,但是在客户端使用Backbone.View + Jade时 ,视图在服务器上使用Express + Jade呈现。 这意味着在扩展的Backbone.View中使用像Rivets这样的东西不会导致HTML打到由Rivets预渲染的客户端。 我希望构build一些最佳实践和技巧,使我自己的DOM服务器端保持简单(在一个位置编辑视图代码)和灵活(能够添加Ezel目前不支持的其他DOM操作模块)。 期望的结果 我想使用类似Rivets的东西来注入模型数据到视图中,然后通过一个HTTP请求为一个完整的页面加载path,并且通过一个HTTP请求来响应变化pushState在客户端上。 什么是节点的环境要求,我可以使用Rivets修改服务器上的HTML之前,它的服务和保持绑定在客户端上? 如何最好地将jQuery , Backbone , Rivets等引入到node.js中 ,让它们在HTML模板的DOM上运行,然后提供预渲染的结果(同时在客户端上保持正常的JS行为)? 相关模块 Sharify和Browserify都是可以帮助共享代码的工具。 Rivets , Backbone & jQuery都有与node.js兼容的发行版。 目前的工作 我已经开始通过Github上的分支向Ezel添加function。

Jade:模板inheritance的文档在哪里?

在Jade 语言参考中,我没有看到任何关于扩展/块语法的文档。 那个文档刚刚过时了吗? 有没有更好的文件?

实时的Web应用程序:socket.io或托pipe的数据/消息?

CONTEXT 应用程序:单页实时networking应用程序 function: 用户操纵应用上的小部件,发送到服务器的小部件数据 服务器使用工作线程计算并将数据发送回应用程序 通讯: types:目前只有应用程序< – >服务器。 将来需要pub / sub 大小:每个更新JSON几个kB任何一种方式 频率:每分钟更新1-10次 高峰负载:几百个并发用户(但当然) 开发者能力:麻瓜 方法 1)天真的做法:托pipenode.js + express + socket.io 我有一个沙箱与天真的方法运行良好,但我觉得像驾驶猫(我告诉你,他可以开车!只是不是很好!)。 我的头盔上的csp,xframe,xss等,但我的socket.io代码是非常基本的,没有特别的事件处理程序或stream量限制。 2)备用方法:托pipenode.js +托pipe的实时数据/消息服务 这里的期望是,托pipe的实时数据/消息服务是健壮的,可以扩展到stream量,除了处理像DoS和安全传输的问题。 托pipe的node.js应用程序将在CDN后面提供静态文件,因此主要处理实时数据和工作线程。 node.js应用程序不会直接面对Web应用程序用户。 题 你会推荐方法#2明显优越,值得额外的成本? 任何其他意见/build议welome。

使用FFMPEG实时stream式传输到networkingaudioAPI

我正在尝试使用node.js + ffmpeg将audiostream式传输到仅使用WebaudioAPI连接的浏览器。 不使用元素,因为它添加了自己的缓冲区8到10秒,我想获得最大的高延迟(最大大约1到2秒)。 audio播放成功,但audio非常波涛汹涌。 这里是我的node.js(服务器端)文件: var ws = require('websocket.io'), server = ws.listen(3000); var child_process = require("child_process"); var i = 0; server.on('connection', function (socket) { console.log('New client connected'); var ffmpeg = child_process.spawn("ffmpeg",[ "-re","-i", "A.mp3","-f", "f32le", "pipe:1" // Output to STDOUT ]); ffmpeg.stdout.on('data', function(data) { var buff = new Buffer(data); socket.send(buff.toString('base64')); }); }); 这里是我的HTML: var audioBuffer […]

麻烦发布一个咕噜插件

我已经做了我的第一个grunt插件,当我尝试运行npm publish我得到了一个need auth错误,所以我运行npm adduser并在写入我的用户名和密码后,我得到这个错误: npm ERR! Error: default value must be string or number npm ERR! at read (/usr/lib/node_modules/npm/node_modules/read/lib/read.js:15:11) npm ERR! at readEmail (/usr/lib/node_modules/npm/lib/adduser.js:96:3) npm ERR! at loop (/usr/lib/node_modules/npm/lib/adduser.js:33:20) npm ERR! at /usr/lib/node_modules/npm/lib/adduser.js:89:5 npm ERR! at Interface.onLine (/usr/lib/node_modules/npm/node_modules/read/lib/read.js:111:5) npm ERR! at Interface.EventEmitter.emit (events.js:95:17) npm ERR! at Interface._onLine (readline.js:202:10) npm ERR! at Interface._line (readline.js:531:8) npm ERR! […]

新来expression,我从哪里开始?

我正在学习node / express。 我已经购买了几本书,并遵循一些在线指南,我想开始修补,但我不知道在哪里添加逻辑到我的路线。 我使用express命令行工具创build了一个基本的应用程序。 我现在有两个路线在我的app.js中定义 app.get('/', routes.index); app.get('/users', user.list); 我看到了玉的模板,我认为我完全有能力通过玉/手写笔提供普通的旧HTML。 但是我想添加逻辑,我不知道该怎么做。 它是否像php一样工作,因为我将这些逻辑添加到jade html文件,或者我把它放在app.js中。 我在一个例子中看到了如何在jade中引用一个variables,但是我想在页面显示时运行代码(服务器端,如php)。 我参考了很多PHP,因为这是我熟悉的唯一语言。

骨干模型 – 扩展API调用

我正在做我的第一个nodejs / backbone项目。 我需要做的是用其他方法扩展用户模型API。 由于REST使用通用的post / get / put请求,你如何扩展骨干模型与其他API调用(即阻止用户帐户,我不想更新用户和使/用户/停用url)? 我可以采取丑陋的路线,但我从专业人士寻找“正确的方式”。 我的骨干模型 define(["jquery", "backbone"], function($, Backbone) { var User = Backbone.Model.extend({ urlRoot: '/user', defaults: { username: '', password: '', email: '' } }); return User; } ); 我的nodejs“路由器” app.put('/user', userController.register); app.post('/user', userController.update); app.get('/user', userController.list); app.delete('/user', userController.delete);

不处理“Access-Control-Allow-Origin” – 客户端问题

这个问题对许多新手来说可能不是一个新问题。 我是其中之一,我必须在客户端处理这个问题。 所以,请不要将此问题标记为重复。 我有我的网站客户端代码部署在服务器,这个网站调用部署在其他一些不同的服务器的web服务。 (请注意:我没有这个webservice代码访问)。 我的AJAX代码来检索数据: $.ajax({ type: 'GET', url: 'http://webservice_url', success: function (data) { //success }, failure: function(error){ //error } }); 在通过AJAX访问此Web服务时,我收到: XMLHttpRequest cannot load http://webservice_url. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 浏览器控制台日志 我可以在浏览器控制台(在我的web服务的“networking”选项卡 – >“响应”选项卡下)成功查看我的web服务的响应。 但是,检索上述错误。 在回顾许多以前的post,我发现通过设置响应标题为: response.addHeader("Access-Control-Allow-Origin", "*"); 将解决这个问题。 但是, 我没有访问权限来改变我的web服务代码,添加响应头 。 […]