Articles of eventemitter

在每个对象作为一个类的NodeJS游戏中,事件应该如何处理?

当在一个Javascript / NodeJS游戏中处理多个类时,我很难找出哪个类应该发出事件,哪些类应该听。 我正在按照本指南创build事件驱动的游戏: http : //pragprog.com/magazines/2011-08/decouple-your-apps-with-eventdriven-coffeescript 我正在写一个小游戏,并将我的课程分为以下控制器: 世界 – 创造游戏世界,并通过一系列“轮stream”来确定一些简单的游戏逻辑(即angular色应该移动,塔应该射击)。 塔 – 一个塔坐在一个10×10的网格,并有一个范围。 当一个物体进入射程,它可以射击。 暴徒(敌人) – 一个暴徒在10×10格子上产生并每3秒移动一次。 在某个时候,它在一个塔的范围内飘荡。 我一整天都在读EventEmitters,但似乎无法找出构build我的活动的正确方法。 如果暴徒在移动的时候发起了一个事件,那么这个塔就是在听“移动”事件呢? 或者,这个世界是否应该控制所有的事件和塔/小怪听世界? 请参阅下面的示例代码。 背景:我一直在为NodeJS开发一个简单的TowerD游戏,并决定首先实现服务器。 我将所有实体存储在MongoDB中,并使用地理空间计算来确定对象是否在范围内进行拍摄。 目前,我正在使用一个基本的3秒循环来“勾选”游戏和进度逻辑,但是我想转向一个真正的事件驱动模型,并且正在挣扎。 世界: exports.World = class World extends EventEmitter constructor: -> ### Initial config ### @gameTime = 3000 # every 3000ms, the game progresses ### Start the game!! ### @game = […]

如何使用.net MVC的Flux和事件发射器?

我正在学习Flux模式。 我学会了使用.net MVC的React并将其呈现在服务器端。 我想学习Flux,但所有教程都使用节点js。 我不使用节点。 我不知道如何实现Event Emitter部分,因为它使用了一个节点函数。 https://www.codementor.io/reactjs/tutorial/react-js-flux-architecture-tutorial 大约三分之一的下降: “事件发射器 – 事件发射器负责在存储完成任何数据动作之后通知订阅者,反之,它也需要能够注册观察者以用于特定的事件,我们将在待办事项应用程序中使用Node的事件发射器“。 考虑到Flux只是一个模式,是否有什么我可以使用.NET MVC,在没有节点,处理事件发射器的一部分? 感谢赞赏,谢谢。

Node.js EventEmitter:如何将类上下文绑定到事件侦听器,然后删除此侦听器

有没有办法访问事件监听器方法中的类上下文有可能删除监听器? 例1: import {EventEmitter} from "events"; export default class EventsExample1 { private emitter: EventEmitter; constructor(private text: string) { this.emitter = new EventEmitter(); this.emitter.addListener("test", this.handleTestEvent); this.emitter.emit("test"); } public dispose() { this.emitter.removeListener("test", this.handleTestEvent); } private handleTestEvent() { console.log(this.text); } } 在这个例子中,删除侦听器的工作,但handleTestEvent()方法没有使用this类上下文的访问。 this指向EventEmitter上下文,所以this.text不可访问。 例2: import {EventEmitter} from "events"; export default class EventsExample2 { private emitter: EventEmitter; constructor(private text: […]

创build自定义EventEmitter时是否需要events.EventEmitter.call(this)?

在自定义事件发射器构造函数中有很多不使用events.EventEmitter.call(this)的例子,而其他的则使用它( 官方文档 ): var events = require('events') , util = require('util'); var MyEmitter = function () { events.EventEmitter.call(this); }; util.inherits(MyEmitter, events.EventEmitter); MyEmitter.prototype.write = function () { this.emit('tick'); }; 随着我对JavaScript的基本理解,我不知道是否需要它。 是否需要调用EventEmitter初始化的东西?

React Flux调度器vs Node.js EventEmitter – 可扩展?

当你使用Node的EventEmitter时,你订阅一个事件。 您的callback仅在特定事件启动时执行: eventBus.on('some-event', function(data){ // data is specific to 'some-event' }); 在Flux中,您向调度员注册您的商店,然后当每个事件被调度时,您的商店被调用。 商店的任务是过滤每一个事件,并确定事件对商店是否重要: eventBus.register(function(data){ switch(data.type){ case 'some-event': // now data is specific to 'some-event' break; } }); 主持人在录像中说: 实际上,所有商店都会收到所有的动作,这就是保持可扩展性的原因。“ 题 为什么以及如何向每个商店发送每个动作(大概)比只向特定商店发送动作更具可扩展性?

Node.JS EventEmitter监听器必须是一个函数

尝试在函数中设置侦听器时出现错误。 我已经回顾了其他代码,这可以工作,但似乎无法得到它为我的目的工作。 这是我试图完成的简化版本。 var ticketGenerator = function(){ var self = this; console.log('ticket generator'); var rows = ""; this.emit("getQueue") var _getQueue = function(){ console.log('Getting Queue'); var connection = mysql.createConnection({ //Connection Data }); connection.connect(); connection.query("SELECT * FROM `queue` WHERE `run` = 0 ORDER BY `queueID` ASC LIMIT 1", function(err, rows, fields){ if(err){ //self.emit("error", "Unable to get data […]

Node.js EventEmitter事件不共享事件循环

也许潜在的问题是,我使用的节点卡夫卡模块如何实现的东西,但也许不是,所以我们走了… 使用节点kafa库,我遇到了订阅consumer.on('message')事件的问题。 该库正在使用标准events模块,所以我认为这个问题可能是足够通用的。 我的实际代码结构庞大而复杂,所以这里是一个基本布局的伪示例来突出我的问题。 (注:这个代码片段没有经过testing,所以我可能在这里有错误,但是这里的语法没有问题) var messageCount = 0; var queryCount = 0; // Getting messages via some event Emitter consumer.on('message', function(message) { message++; console.log('Message #' + message); // Making a database call for each message mysql.query('SELECT "test" AS testQuery', function(err, rows, fields) { queryCount++; console.log('Query #' + queryCount); }); }) 我在这里看到的是,当我启动我的服务器时,有十万左右积压的消息,卡夫卡会想要给我,它通过事件发射器。 所以我开始收到消息。 获取并logging所有消息大约需要15秒。 这是我期望看到的输出假设mysql查询是相当快的: […]

在node.js中使用emit函数

我不明白为什么我不能让我的服务器运行发射function。 这是我的代码: myServer.prototype = new events.EventEmitter; function myServer(map, port, server) { … this.start = function () { console.log("here"); this.server.listen(port, function () { console.log(counterLock); console.log("here-2"); this.emit('start'); this.isStarted = true; }); } listener HERE… } 听众是: this.on('start',function(){ console.log("wtf"); }); 所有的控制台types是这样的: here here-2 任何想法,为什么它不会打印'wtf' ?

Nodejs EventEmitter – 定义侦听器函数的作用域

我想有这样的工作: var Events=require('events'), test=new Events.EventEmitter, scope={ prop:true }; test.on('event',function() { console.log(this.prop===true);//would log true }); test.emit.call(scope,'event'); 但不幸的是,听众甚至没有被叫到。 有没有办法做到这一点与EventEmitter? 我可以Function.bind给侦听器,但是,我真的希望EventEmitter有一些特殊的(或明显的)方法来做到这一点… 谢谢您的帮助!

eventEmitter侦听器和具有不同参数的发射器

我们可以有一个发射器的多个监听器,每个工作在不同数量的参数上? 让事件发射器是这样的: evetE.emit('pre', global, file, self); corresponding event listeners: //Listener 1 m.eventE.on('pre', function() { //TODO }) //Listener 2 eventE.on('pre', function(context, file, m){ console.log(context.ans); }); //Listener 3 eventE.on('pre', function(context){ console.log(context.ans); }); //Listener 4 this.eventE.on('pre',function (context) {}) 如果以上是真的,那么哪个参数传给哪个监听器呢?