Socket.IO - 回调仅发出的用户

时间:2016-10-23 14:21:36

标签: javascript node.js socket.io

我正在制作一个需要用户登录的聊天应用程序,我到目前为止设法通过使用UserApp.io来使登录系统正常工作,但我似乎无法找到一种方法将“回调”发送回已将信息发送到服务器的用户。

因此,对于 index.html ,当提交登录表单时,它会收集两个字段的值并将数据发送到后端。

$('form#login').submit(function() {
    var data = {};

    data.email = $("#login_email").val();
    data.password = $("#login_password").val();

    socket.emit('user login', data);
});

index.js 文件中,它使用UserApp API接收详细信息并进行检查,该用户API有效并且所有详细信息都是正确的。它还会检索名字和姓氏等信息。

socket.on('user login', function (user) {
    logger.info('Receiving login info for "' + user.email + '"...');

    UserApp.User.login({"login": user.email, "password": user.password}, function (error, result) {
        if (error) {
            logger.error('Login failed: ' + error.message);
        } else {
            var userToken = result.token;
            var userID = result.user_id;
            console.log("User has logged in.");

            UserApp.User.get({
                "user_id": userID
            }, function (error, result) {
                if (error) {
                    logger.error(error.message);
                } else {
                    logger.info(result[0]['first_name'] + " " + result[0]['last_name'] + " Has logged in!")
                }
            });
        }
    });
});

所以这是我的问题。我似乎无法找到一种给index.html回调的方法,因此它可以显示“用户名不正确”等错误。

那么有没有办法给一个人回电,更具体地说,是提交登录表格的人?

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

socket.io有确认回调,这里是文档

http://socket.io/docs/#sending-and-getting-data-(acknowledgements)

在发出

时添加回调函数作为第三个参数
$('form#login').submit(function() {
    var data = {};

    data.email = $("#login_email").val();
    data.password = $("#login_password").val();

    socket.emit('user login', data, function (result) {
        console.log(result);
    });
});

然后回调函数服务器端可以有一个额外的参数,这是您在发出

时定义的回调
socket.on('user login', function (user, callback) {
    logger.info('Receiving login info for "' + user.email + '"...');

    UserApp.User.login({"login": user.email, "password": user.password}, function (error, result) {
        if (error) {
            logger.error('Login failed: ' + error.message);
        } else {
            var userToken = result.token;
            var userID = result.user_id;
            console.log("User has logged in.");

            UserApp.User.get({
                "user_id": userID
            }, function (error, result) {
                if (error) {
                    logger.error(error.message);
                } else {
                    logger.info(result[0]['first_name'] + " " + result[0]['last_name'] + " Has logged in!")
                    return callback('your results');
                }
            });
        }
    });
});