尝试登录失败后重新发出TypeScript-mysql-socket.io

时间:2018-09-03 19:12:59

标签: mysql typescript socket.io

我遇到了以下问题:在我无法登录然后成功登录我的游戏后,每次我登录失败都会创建一个游戏实例。在尝试注册失败时也会发生这种情况。

我喜欢给你们更多的上下文代码,但是堆栈溢出会让我想提供更多细节,但我不确定还有什么要说的。我将链接我的仓库。

一次失败的尝试: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);
    })
  }

1 个答案:

答案 0 :(得分:0)

我将侦听器置于与发射器相同的函数中。当我按下“注册/登录”按钮时,将创建一个新实例,以创建我的侦听器,这样当该侦听器被命中时,该侦听器的每个实例都将完成工作。

helpful post