Многопользовательская игра в Node.js «отписаться» от источника событий? - PullRequest
0 голосов
/ 06 февраля 2019

Есть ли способ «отписаться» от источника событий в 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».Должен ли я иметь источник событий в мировом классе вместо этого?

...