我目前正在使用 json-socket 模块在 node.js 中编写套接字服务器,但遇到了一些麻烦。
当前,当客户端连接到服务器时,他们在 json 对象中发送带有一些数据的命令,例如登录将如下所示
{ type : 'login', data : { username: 'Spero78' } }
为了处理这些请求,我有一个命令对象
var commands = {
'login' : authUser,
'register' : userRegister
}
这些函数由 server.on 调用
server.on('connection', function(socket) {
console.log('Client Connected');
socket = new JsonSocket(socket);
socket.on('message', function(message) {
if(message.type != undefined) {
if(commands[message.type]){
var response = commands[message.type].call(this, message.data);
if(response != undefined){
console.log(response);
socket.sendMessage(response);
} else {
console.log("No Response!");
}
} else {
console.log('Unexpected Command!');
}
}
});
});
这些函数返回 javascript 对象,但响应变量始终未定义,并且“无响应!” 始终打印消息
这是 authUser 函数
function authUser(data){
console.log('Auth: ' + data.username);
database.query('SELECT * FROM players WHERE username = ?', [data.username], function(err, results) {
if(results.length < 1){
console.log('Bad Login!');
var response = {
type : 'badlogin',
data : {
//...
}
}
return response;
}
var player = results[0];
var response = {
type : 'player',
data : {
//...
}
}
return response;
});
}
有没有更好的方法来做到这一点?还是我错过了导致对象不返回的东西