部屋やロビーなどで動作するゲームを作ろうとしています (追加のチェック/情報の保存を除いて、チャットアプリを想像してください)。
たとえば、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 ソリューションも受け入れます。