我遇到了以下问题:在我无法登录然后成功登录我的游戏后,每次我登录失败都会创建一个游戏实例。在尝试注册失败时也会发生这种情况。
我喜欢给你们更多的上下文代码,但是堆栈溢出会让我想提供更多细节,但我不确定还有什么要说的。我将链接我的仓库。
一次失败的尝试:image
两个游戏实例:image
我的仓库:elevaidusTS
服务器
socket.on('signIn', (signInInfo: any) => {
let sql = 'SELECT * FROM player WHERE username = ? AND password = ?';
var query = this.db.query(sql, [signInInfo.username,signInInfo.password], (err, res) => {
if (err) {
console.log(err);
socket.emit('errorFromBackend', err.code);
}else if(res.length === 0){
socket.emit('errorFromBackend', 'username and or password was incorrect');
}else{
console.log(`\n\n===============>\t Player logging in\n`)
console.log(`===============>\t username: ${signInInfo.username}\n`)
console.log(`===============>\t password: ${signInInfo.password}\n`)
this.CreatePlayer(socket, { player: res[0], isNew: false });
}
})
})
客户
public SignIn(): void {
this.socket.emit('signIn', {username: signInUsername.value, password: signInPassword.value })
this.socket.on('signedIn', (playerInfo: any) => {
this.CreateGame(playerInfo);
})
this.socket.on('errorFromBackend', (err: string) => {
alert(err);
})
}
public SignUp(): void {
this.socket.emit('signUp', {username: signInUsername.value, password: signInPassword.value })
this.socket.on('signedUp', (playerInfo: any) => {
this.CreateGame(playerInfo)
})
this.socket.on('errorFromBackend', (err: string) => {
alert(err);
})
}
答案 0 :(得分:0)
我将侦听器置于与发射器相同的函数中。当我按下“注册/登录”按钮时,将创建一个新实例,以创建我的侦听器,这样当该侦听器被命中时,该侦听器的每个实例都将完成工作。