javascript - Node.js client.emit 仅在第一次尝试后才工作?

标签 javascript mysql node.js socket.io

我正在编写一个应用程序,用户可以通过电子邮件和密码登录。如果登录正确,我的 Node.js 服务器会返回"is"或“否”。

在服务器上,我可以console.log结果并每次都看到它。但是,client.emit 命令仅在第一次后才有效。并且仅当输入的“电子邮件”和“密码”两次都相同时。因此,客户端上的警报仅在第二次后才会触发。

这是我的服务器代码:

client.on('checkcred', function(email, password){
        helper.check(email, password,function(run){
        client.emit('conf',run);
        console.log(run);
                });
        });

helper.js

exports.check = function(zmail, pasword,callback){

                client.query('SELECT id FROM passwords WHERE email="'+zmail+'"', function(err,data){

                 if(data.length == 0){
                console.log("wrong email");
                callback("no");
                }else{
                        var savedemail = data[0].id;
                        client.query('SELECT password FROM passwords WHERE id='+savedemail+'', function(err,pass){
                                var databasepass = pass[0].password;

                                if (pasword == databasepass){
                                        console.log("correct pass");
                                        callback("yes");
                                }else{
                                        console.log("incorrectpass");
                                        callback("no");
                                }
                        });
                }
     });
                }

客户端

 var socket  = io.connect('http://54.213.92.113:8080');

            socket.on('conf', function (yn) {
                      alert(yn);
                      });

 function upload(email, password){

            //check the email and password against the saved email and pass.
            socket.emit('checkcred', email, password);

        }

我非常感谢任何帮助!

最佳答案

您必须将 socket.on('conf') 包装到 onConnection 回调中,如下所示:

io.sockets.on('connection', function (socket) {
    socket.on('conf', ...)
}

关于javascript - Node.js client.emit 仅在第一次尝试后才工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175792/

相关文章:

mysql - 计算两个客户端之间的最高 session 数

MySQL: '%' 错误中的未知列 'order clause'

node.js - 如何在端口 80 上运行环回应用程序

javascript - Microsoft Bot Framework 中是否需要为每个 'endDialog' 调用 'beginDialog' ?什么时候应该调用 'endDialog' ?

javascript - Owl Carousel jquery插件autoHeight : true has no effect

javascript - 有一个带有链接 Javascript 的 HTML 文档 我试图在单击提交按钮时添加一条警报消息。我该怎么做呢?

javascript - 无法通过 jQuery 禁用点击时的 div

javascript - 使导航项与褪色图像分开

php - 将 JOIN SQL 查询序列化为 JSON 的最佳方法

node.js - 找不到 v8-debug@0.4.6 和 node@4.4.5 的预构建二进制文件