Tag: 事件

NodeJS – 强制用户等待全局事件完成

我有一个节点服务器,执行以下操作: 我有一个外部服务器的URL列表,称之为URLServer。 当用户点击我的NODE服务器时,我的节点服务器向URLServer发出请求并获得20个URL的列表。 只要我们获得了这20个URL,我想让我的节点服务器去获得每个URL的标题,这意味着我将获取URL并创build一个DOM,然后提取标题,我也获得其他数据,所以这是它必须完成的方式。 一旦我这样做了,我想要的URL和URL的标题保存在内部存储器和/或数据库。 所以我有一个URLcaching和一个标题caching(我不想总是抓取URL)。 我有这样的事情:如果(URLcaching为空)从URLServer获取URLS并caching这些URL 然后我想检查每个URL,看看他们的标题是否在我的caching中,所以我这样做:对于每个URL如果标题caching[URL],其他获取网站,创buildDOM,提取标题+其他数据和caching 这对于一个用户来说效果很好,但是当我在服务器上尝试一个很重的负载时,服务器就会挂起。 我得出结论服务器挂起的原因如下: 用户1请求 – 空的高速caching – 获取URL并完成获取URL的内容用户2请求 – 由于用户1的请求尚未完成,所以对于该用户来说,高速caching仍为空。 因此,用户2再次强制取回URL和它们各自的内容。 用户3请求 – 用户1和用户2请求尚未完成,所以相同的问题… 因此,假设我有10个URL需要提取,而不是打开10个连接,每个URL一个,然后caching数据,如果我有20个用户在同一时间点击服务器,我将打开200个连接(每个用户打开10个连接)。 如何阻止用户X(其中X> 1)导致这些事件? 我基本上希望服务器closures一个门,并要求每个用户等待,直到它已经填充caching,然后打开门,一旦这些填充,有没有办法做到这一点?

Node.JS:forEach vs for循环asynchronous性质

for(var i=0;i<50;i++) { functionWrappingAsycfuncs(i) } var nums = [0,1…50] nums.forEach(functionWrappingAsyncfuns) functionWrappingAsycfuncs(i){ readFileAsync(i,function(){ console.log(i); }); } 在上面的函数中,在for循环中运行它的预期性质是50 50次? 但随着forEach它logging1 2 3 …. 这两个实现看起来都一样,但是确实有不同的任务第一个函数调用所有asynchronous函数,0到50作为参数,但并不等待callback完成 但第二个(在我的项目之一)似乎等待callback,并继续在数组中的下一个项目? 他们都一样吗?

节点 – 在杀死事件

有没有办法在node.js进程被终止时运行一个函数? 这是我的目标(在C): signal(SIGSEGV, sig_handler); void sig_handler(int sig) { if (sig == SIGSEGV) { // do stuff } } 那么,是否有可能在node.js中做到这一点?

节点“networking”模块ECONNREFUSED错误

我正在看这个网页: http : //nodejs.org/api/net.html#net_net_createconnection_options_connectionlistener 从页面运行代码: var net = require('net'); var client = net.connect({port: 8124}, function() { //'connect' listener console.log('client connected'); client.write('world!\r\n'); }); client.on('data', function(data) { console.log(data.toString()); client.end(); }); client.on('end', function() { console.log('client disconnected'); }); 我得到的错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: connect ECONNREFUSED at errnoException (net.js:901:11) at Object.afterConnect [as oncomplete] (net.js:892:19) shell […]

Gulp – 通过ftp上传文件后通知

我使用Gulp来观看文件,通过ftp进行更改,并在上传完成时发送通知。 我不知道如何连接这些插件,使其工作。 现在我有: var gulp = require('gulp'), ftp = require('gulp-ftp'), watch = require('gulp-watch'), notify = require('gulp-notify'); var markupWatcher = watch({ glob: 'src/*.php', name: 'markup' }); markupWatcher.gaze.on('all', function(event, path) { options.remotePath = ftpData.remotePath; gulp.src(path) .pipe(ftp(options)) .on('finish', function() { console.log('test'); notify({title: 'File Uploaded', message: 'test'}); }); 我认为通知需要传递给.pipe() ,但我不知道如何在这种情况下(在.on()callback中)。 控制台上打印“testing”,但通知是沉默的。 这似乎是一个简单的任务,但不熟悉Node使Gulp困难。 感谢您的任何build议。

如何检查node.js中的两个事件

我正在寻找一个function,但只有当两个或多个事件已经发射。 有没有内置的方式来做到这一点? 这里有一个事件: setup.on('api routes ready', function () { console.log('Yay!'); }); 我怎样才能做到这一点: setup.on('api routes ready', 'website routes ready', function () { console.log('Yay!'); }); 任何想法将摇滚!

为什么我的心跳过程一开始就会死亡?

我有一个简单的心跳过程,应该永远运行,并继续跳动,但它一开始就会死亡。 $ node heartbeat.js Starting heartbeats $ 我的心跳脚本非常简单。 var heartbeats = require('heartbeats'); // tell me that the script is starting console.log('Starting heartbeats'); // create a heart that beats every second var heart = heartbeats.createHeart(1000); // every heartbeat, tell me the beat number heart.createEvent(1, function(heartbeat, last){ console.log('beat number ' + heart.age); }); 但是joinprocess.stdin.resume(); 最后让它永久运行: $ node […]

Node.js中process.emit的事件范围

我有代码来发送这样的事件: process.emit('event', event); 我想听听这样的事件: process.on('event', function(event) { //HANDLING LOGIC }); 当文件位于同一个文件夹时,它工作正常。 当我在其他文件夹中find侦听器时,它不会被触发。 什么可以成为这个和我可以处理它的根源? 编辑: 实际的问题只是一个包含事件处理的文件丢失公开。 对我感到羞耻。

什么事件顺序保证做节点?

我在文档中看到,听众将按“按顺序”执行某个特定事件,但还有其他什么保证? 例如,下面的代码是保证按顺序打印0到9还是仅仅是当前实现的副作用? var EventEmitter = require('events').EventEmitter var ev = new EventEmitter(); ev.on("foo", console.log); for (var i = 0; i < 10; i++) { ev.emit("foo", i); }

捕获HTTP响应事件

我正在构buildNode Web应用程序(使用Express)并尽可能使所有内容都干,我自动获取每个请求的数据库连接,但是我也需要释放它(回到池)。 我可以在每个path上手动执行,但这只会污染代码。 我认为一旦响应完成生成或发送,我应该听服务器事件并释放它。 我有什么select? 响应完成后,哪些事件(以及哪些对象(应用程序,请求或其他)被触发?