2016-10-15 6 views
1

У меня проблема с правильным контекстом в классе JavaScript и событием socket.io 'disconnect'.Как я могу получить контекст события 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 
    } 
} 

В функции «playerLeave» Я могу получить доступ к торцевого идентификатор с «this.id». Но чтобы получить доступ к «_players» карты мне нужен контекст класса, который я получаю, если я изменить «addListeners» функция для:

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

Но от этого я потеряю контекст события, и поэтому possebility к вызовите «this.id», чтобы получить идентификатор сокета.

Как я могу получить оба?

ответ

0

Вы можете попробовать что-то вроде этого:

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

playerLeave (socket) {...} 
Смежные вопросы