Tag: eventemitter

如何正确删除节点js eventemitter中的事件监听器

我有一个GET和POST路由的设置,这个想法是发送到路由触发一个事件,GET路由是一个服务器发送的事件stream,触发每次POSTed事件触发…但是,我认为我做了错误的事情,事件监听器似乎得到例行的添加,尽pipe只有一个事件stream用户…我做错了什么? var events = require('events'), EventEmitter = events.EventEmitter, rr = new EventEmitter(); app.post('/api/:boardname/remoterefresh', function(req, res){ var boardname = req.param('boardname'), data = new Date().getTime(); rr.emit("refresh-"+boardname, data) res.json({data: data}) }); app.get('/api/:boardname/remoterefresh', function(req, res){ var boardname = req.param('boardname') rr.on("refresh-"+boardname, function(data){ setTimeout(function(){ res.write('data: '+data+'\n\n'); }, 1000) }); req.socket.setTimeout(Infinity); res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); res.write('\n'); req.on('close', […]

如何在Node.js中编写非阻塞代码?

我可以非常容易地在Node.js中编写非阻塞I / O。 这是整个图书馆的设置。 但是任何计算都是阻塞的。 通过事件发射器传递的任何消息都被阻塞 。 例如,发射事件立即被解决,因此被阻塞: var e = new process.EventEmitter; e.on("foo", function() { console.log("event"); }); process.nextTick(function() { console.log("next tick"); }); setTimeout(function() { console.log("timeout"); }, 0); e.emit("foo"); > event > next tick > timeout 除了在nextTick包装调用,我如何使代码非阻塞? 我希望在事件循环的每个循环中尽可能less地进行计算,以便尽可能多地同时服务于客户端。 如何以非阻塞的方式编写我的代码? 而当我有非阻塞代码,我怎么扩大跨多个进程? 一种select是等待WebWorker子stream程API完成。

你如何在node.js中共享EventEmitter?

我想从一个文件/模块/脚本发出事件,并在另一个文件/模块/脚本中听他们。 如何在不污染全局命名空间的情况下共享它们之间的发射器variables? 谢谢!

Node.js – 从EventEmitterinheritance

我在相当多的Node.js库中看到这种模式: Master.prototype.__proto__ = EventEmitter.prototype; (来源于此 ) 有人可以给我解释一下,为什么这是一个普遍的模式,什么时候方便?