現在、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;
});
}
これを行うより良い方法はありますか?または、オブジェクトが返されない原因となっている何かが不足していますか