我正在尝试制作一款适用于房间、大厅等的游戏(想象一下聊天应用程序,除了额外的检查/信息存储)。
假设我有一个模块 room.js
var EventEmitter = require('events');
class Room extends EventEmitter {
constructor (id, name) {
super();
this.id = id;
this.name = name;
this.users = [];
}
}
Room.prototype.addUser = function (user) {
if(this.users.indexOf(user) === -1) {
this.users.push(user);
this.emit('user_joined', user);
} else {
/* error handling */
}
};
module.exports = {
Room: Room,
byId: function (id) {
// where should I look up?
}
};
我怎样才能得到这个对象(带有事件)?如何访问此对象发出的事件?
在单个节点实例中,我会执行以下操作:
var rooms = [];
var room = new Room(1234, 'test room');
room.on('user_joined', console.log);
rooms.push(room);
另外,我不太明白 Redis 是如何提供帮助的(它是不是 EventEmitter 的替代品?)
问候。
编辑:也会接受 PM2 解决方案。