Socket.io 发出不被调用
Socket.io emit not being called
我这里有这段代码
io.on("connection", function(socket){
//other methods where emit works
socket.on("login", function(data) {
try {
pg.connect(conString, function(err, con) {
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);
}
});
});
} catch (ex) { console.log(ex); }
});
});
显然,在客户端,我有这样的东西:
socket.on("loginResponse", function(data) {
alert(data.status);
});
但是,每当我尝试成功登录时,我的服务器都不会向客户端发出任何内容,即我将在我的终端上看到打印的行,但客户端没有得到服务器的响应。我一直对此感到困惑。我还有另一个函数可以触及PostgreSQL驱动程序并成功发出,但这个函数没有。有谁知道为什么会这样?
你的代码中有一个错误。异步函数永远不应该写在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);
}
});
});
});
尝试这种方法,让我知道它是否有效。
相关文章:
- Skycons在按时间间隔调用Forecast.io API时中断
- 如何为单个图形调用多个 Keen IO 集合
- 用户登录后如何调用 socket.io 授权
- Socket.io 发出不被调用
- 节点.js + Socket.io 超出最大调用堆栈大小
- Node js调用socket.io函数的用法
- socket.io'断开连接'如果页面刷新速度足够快,则不调用
- 如何使用socket.io从服务器调用客户端方法
- Trigger.io:调用location.reload()我们可以'请勿访问任何锻造属性
- 调用AJAX请求预测时出错.io api
- 我们如何从dojo.io.iframe.send调用中提取状态代码?
- 控件何时使用JQuery/socket.io调用ARI函数
- 套接字.IO套接字未被调用
- Angular / Socket.io / HTML /从内部调用控制器's函数