Articles of 事件

promis中的Nodejs事件不能解决

当我打电话pdfCreate ,一个事件被加载,工作正常。 然后createIncidentReport被包含的服务调用,这工作正常。 一旦将PDF写入磁盘,将调用pdfStream.on('finish') ,这可以在控制台上正常工作。 日志被写入,但是然后邮件服务不被调用。 我应该如何解决这个承诺? function pdfCreate(incidentId) { Incident.findById(incidentId) .then(incident => pdfService.createIncidentReport(incident)) .then(() => mailservice.sendPdfCreatedMail(incident)); } function createIncidentReport(incident, res) { return new Promise((resolve, reject) => { let pdfStream = fs.createWriteStream(settings.PDF.DIRECTORY + incident.id + '.pdf'); incidentReport.pipe(pdfStream); pdfStream.on('finish', function () { console.log('finished writing pdf') resolve(); }); } } function sendPdfCreatedMail(incident) { console.log('mail'); let message = […]

在页面closures后向node.js发送消息

所以我很新,所以我很抱歉,如果这是一个完全错误的做法,但我目前正在使用express和socket.io使用node.js编程一个小聊天应用程序。 我设法得到一个login消息logging到控制台,但我真的很苦恼注销之一。 当用户打开页面时,我将房间名称和用户名从一个cookie中取出,并发送到服务器,如下所示: var socket = io(); var roomname = readCookie('Roomname'); var nickname = readCookie('Nickname'); var data = {'type': 'user', 'channel': roomname, 'user': nickname, 'data': "joined"}; socket.emit('chat', data); 之后,我在服务器端过滤消息,并将答案发送给所有这样的客户端: case 'user': io.emit('chat/' + msg.channel, {type: 'user', user: msg.user, data: msg.data}); break; 我总是发送string“聊天”,然后房间名称作为频道名称,这样只有右侧房间的用户才能看到该消息。 在那之后,我清理了客户端收到了什么样的消息: case 'user': console.log(msg.user + " just " + msg.data + " the […]

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侦听器时,它不会被触发。 什么可以成为这个和我可以处理它的根源? 编辑: 实际的问题只是一个包含事件处理的文件丢失公开。 对我感到羞耻。