Socket.io发出没有被调用

时间:2016-02-20 19:09:29

标签: javascript node.js socket.io

我这里有这段代码

id

显然,在客户端,我有类似的东西:

AFJSONRequestSerializer

但是,每当我尝试成功登录时,我的服务器都不会向客户端发送任何内容,即我将在终端上看到打印的行,但客户端没有从服务器获得响应。我一直对此感到困惑。我有另一个功能,触及PostgreSQL驱动程序并成功发出,但这个没有。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

您的代码中存在错误。永远不应该在try / catch中编写异步函数。

try {
    setTimeout(function() {
        do_something_that_throws();
    }, 1000);
}
catch (e) {
    alert("You won't see this!");
}

问题是控制流在执行do_something_that_throws()之前离开try块,因此回调中抛出的错误永远不会被捕获。

socket.on("login", function(data) {    
  pg.connect(conString, function(err, con) {
    if(err) {
      // handle error
    }
    var query = con.query("SELECT * FROM accounts WHERE username" +
    "='" + data.usn + "';");
    query.on("row", function(row, result) result.addRow(row); });
    query.on("end", function(result) {
      if (sha512(data.pwd, result.rows[0].salt).hash ===
        result.rows[0].password) {

        socket.emit("loginResponse", { status: "Success" });

        console.log("I GOT UP TO HERE WITHOUT EMITTING! WTF?");
        console.log(sha512(data.pwd,result.rows[0].salt).hash);
        console.log(result.rows[0].password);
      }
    });
  });
});

尝试这种方法,让我知道它是否正常工作。