Tag: 事件

Node.js事件监听器被阻止?

使用以下代码,我注册了一个node.js事件侦听器,该侦听器正在等待来自通过名为zmqevent的全局nodejs EventEmitter转发的zeromq连接的响应。 global.zmqevent.removeAllListeners(req.user._id) global.zmqevent.on(req.user._id, function (msg, status) { console.log('event triggered'); }); global.zmq_controller_pub.send(recipient + " " + String(req.user._id) + " " + "getReportSingle"); console.log("1"); console.log("1"); console.log("1"); console.log("1"); console.log("1"); console.log("1"); console.log("1"); console.log("1"); 基本上事件队列的作品。 zmq_controller_pub.send将请求发送到我的外部脚本,响应到达node.js,发出一个node.js事件,它触发上面定义的事件侦听器。 我怎样才能让事件监听器在我的脚本结尾处中断console.log()链? 电stream输出如下所示: 1 1 1 1 1 1 1 1 event triggered 基本上我想等待来自我的zeromq连接的响应2秒,并且如果没有响应到达,则激活另外的“离线”结果。 但是即使这个简单的例子还没有起作用,事件只是在我的脚本的最后才被解雇。 你有好主意吗? 显然必须有一个愚蠢的错误…

发射事件不会触发

我排放事件只是不想开火。 我在nodejs上是个新手,对不起,我为几个小时解决不了。 客户端模块 var Client = require('steam'); var EventEmitter = require('events').EventEmitter; var newClient = function(user, pass){ EventEmitter.call(this); this.userName = user; this.password = pass; var newClient = new Client(); newClient.on('loggedOn', function() { console.log('Logged in.'); // this work this.emit('iConnected'); // this don't work }); newClient.on('loggedOff', function() { console.log('Disconnected.'); // this work this.emit('iDisconnected'); // this don't work }); […]

Node.js如何将你的代码转换成事件?

当你第一次运行你的节点程序时,怎样提供给事件循环的第一个事件是什么? 您的程序是否像顶级callback一直在执行? (我会认为这个顶级callback通常是“server.listen()”?)

节点读取stream:stream何时发生?

这是一个代码示例,它与您可以从networking或文档中获得的代码没有多大区别: var fs = require('fs'); var r = fs.createReadStream(process.argv[2], { encoding: 'utf8' }); r.on('data', function (chunk) { console.log("chunk: >>>" + chunk + "<<<"); }); r.on('end', function () { console.log("This is the end"); }); 什么使我困惑:什么时候触发事件的stream发生? 显然不是直接在读取stream的构造上,因为那么在我们到达之前就完成了,并且事件监听代码将永远不会被执行(这是完美的)。 什么让我担心:如果来电太迟,是否有理由有机会错过一个事件?

在逻辑上什么是线程中的事件循环?

我遇到了node.js和python's tornado与Apache 。 他们说 : Apache为每个连接创build一个线程。 Node.js & tornado实际上是在线程上进行事件循环,而单个线程可以处理多个连接。 我不明白,逻辑上是一个线程的孩子。 在计算机科学方面: 进程具有隔离内存,并与上下文切换共享CPU。 线程划分一个进程。 因此,具有多个控制点的过程是由多个线程实现的。 现在, 什么event loop在一个线程下工作? 如何处理一个线程控制下的不同连接? 更新: 我的意思是如果在一个线程下有3个套接字进行通信,那么1个线程怎样才能与3个套接字进行通信,而不会让任何人等待呢?

Lua是一种基于事件的编程语言吗?

是基于Lua事件还是线程? 最近我对Node.js有很多的了解,看来最大的卖点之一就是基于事件的,而不是基于线程的。 什么是Lua?

与nodejs进行数据和string比较

我是一个node.js的初学者,我愿意创build一个TCP服务器,根据接收到的信息给出不同的答案。 这是服务器端: var net = require('net'); var server = net.createServer(function(c) { console.log('socket opened'); c.setEncoding('utf8'); c.on('end', function() { console.log('connection/socket closed'); }); c.on('data', function(data) { console.log('Data:'+data); if(data.toString() == "open"){ c.write('Answer: opened'); }else if(data.toString() === "add"){ c.write('Answer: added'); }else if(data.toString() === "process"){ c.write('Answer: processed'); } }); }); server.listen(8080, function() { // start server (port 8080) console.log('server started'); }); […]

等到所有的事件监听器完成

所以一旦被调用,事件发送器将失去对事件监听器正在做什么以及它们将运行多长时间的任何控制。 但是如果我们只有在所有事件监听器完成工作之后才需要做下一件事情呢? 我怎么知道他们什么时候完成工作? 一种解决scheme可能是从EventEmitter.listeners()中获取侦听器,并将它们与async或类似的东西并行调用,但这并不是那么棒。 (( 任何不错的解决scheme呢?

在Node.JS中为GPIO接口设置onChange事件

我在安装了pi-gpio的 Raspberry Pi上安装了Node.JS,可以访问到gpio端口。 我可以读写,但是鉴于node.js的事件驱动特性,是否可以对其进行设置,以便在GPIOinput发生变化并变高或变低(取决于设置)时,发生事件解雇?

防止EventEmitter触发多个排队事件

我有一个MyWorker类的两个实例。 我将这些对象的start方法绑定到start事件。 还有一些要处理的项目。 我将一个项目分配给每个对象,并emit start事件。 for (i = 0; i < objs.length; i += 1) { objs[i].item = items.shift(); } self.emit('start'); 启动方法有一些asynchronousIO作业,所以一切工作正常。 处理done后,对象发出done事件。 done方法检查items.length > 0 。 如果是,则将下一个项目分配给相同的对象并发出start事件。 MyClass.prototype.done = function (data) { var self = this; data.object.item = items.shift(); self.emit('start'); } 现在,考虑一个IO等待时间很less的事件,或者事件没有IO操作的情况。 全部同步。 在这种情况下,即使在下一个对象start事件之前, done事件也会被触发。 done将分配新的对象,并再次发射start 。 这是造成这个问题的原因。 第二个对象的start现在将被调用两次。 任何想法如何解决这个问题?