我正在制作一个需要用户登录的聊天应用程序,我到目前为止设法通过使用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回调的方法,因此它可以显示“用户名不正确”等错误。
那么有没有办法给一个人回电,更具体地说,是提交登录表格的人?
任何帮助都将不胜感激。
感谢。
答案 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');
}
});
}
});
});