2016-10-15 1 views
1

JavaScriptクラスの正しいコンテキストとsocket.ioの 'disconnect'イベントに問題があります。私は "this.id" とソケットのIDにアクセスできる "playerLeave" 機能でNode.jsクラスとsocket.ioイベントコンテキストを取得するにはどうすればよいですか?

class GameSession { 

    constructor(gameSessionId) { 
     this._gameSessionId = gameSessionId; 
     this._players = new Map(); 
    } 

    addPlayer(socketId,player) { 
     this._players.set(socketId,player); 
     this.addListeners(player); 
    } 

    addListeners(player) { 
     player.socket.on('disconnect',this.playerLeave); 
    } 

    playerLeave() { 
     // ##### here is my Problem 
    } 
} 

私のクラスはそうのように見えます。

addListeners(player) { 
    player.socket.on('disconnect',() => this.playerLeave()); 
} 

しかし、これによって、私は、イベントのコンテキストなどにpossebilityを失う:しかし、私は私が「addListeners」機能を変更した場合、私は取得クラスのコンテキストを必要とする「_players」マップにアクセスするにはソケットIDを受け取るために "this.id"を呼び出します。

どうすれば両方取得できますか?

答えて

0

あなたはこのような何かを試すことができます:

addListeners(player) { 
    player.socket.on('disconnect', this.playerLeave.bind(this)); 
} 

playerLeave (socket) {...}