Есть ли способ «отписаться» от источника событий в Node.js?
Я создаю небольшую игру, в которой есть несколько карт, в которые игроки могут входить и выходить.Каждая карта расширяет класс EventEmitter и генерирует игровые события, такие как чат, движение игрока, другие игроки, входящие и выходящие и т. Д.
Это выглядит примерно так ...
class Map extends EventEmitter {
//other code..
enter(player) {
this.addListener('chat', handlePlayerChat.bind(player))
this.addListener('move', handlePlayerMove.bind(player))
this.addListener('attack', handlePlayerAttack.bind(player))
//and so on..
}
exit(player) {
//player is going to another map
//here i want to remove player's all subscriptions to 'this' map so
//it can listen to events from the new map
this.removeListener('chat', handlePlayerChat.bind(player)); //this doesn't work..
}
}
Не уверен, если этоэто правильный путь.
У меня также есть класс «World», которому принадлежат все «Map».Должен ли я иметь источник событий в мировом классе вместо этого?