【发布时间】:2016-05-06 13:40:32
【问题描述】:
我正在使用 TypeScript、socket.io 和游戏引擎 Phaser 进行测试,并在 Visual Studio 上工作
这是我的 socket.io 事件处理类的示例
class RemoteEventHandlers{
...
constructor(socket,players){
this.socket = socket;
this.players = players;
}
...
onSocketConnection(client): void{
client.on('disconnect', this.onClientDisconnect.bind(this));
client.on('new player', this.onNewPlayer.bind(this));
client.on('move player', this.onMovePlayer.bind(this));
}
onClientDisconnect(): void{
let disconnectedPlayer = this.searchPlayerById(this.id);
if (!disconnectedPlayer)
{
console.log("not found ", this.id);
return;
}
this.players.splice(this.players.indexOf(disconnectedPlayer), 1);
this.broadcast.emit('remove player', { id: this.id });
}
...
}
我需要访问当前作用域的this.id和this.broadcast,同时我需要访问类的this.players和方法this.searchPlayerByid()(这就是我使用.bind(this)的原因)
如果有人能给我一些提示,我将不胜感激。
更新
此代码正在运行:
onSocketConnection(client): void{
this.client = client;
client.on('disconnect', () => {this.client = client; this.onClientDisconnect();});
client.on('new player', data => { this.client = client; this.onNewPlayer(data);});
client.on('move player', data => { this.client = client; this.onMovePlayer(data);});
}
我可以通过在回调函数中使用this.client.id 来访问套接字ID
【问题讨论】:
标签: javascript socket.io typescript ecmascript-6 phaser-framework