我正在尝试了解如何使用 node.js 和 socket.io。我在 PHP 之前使用过,但我无法理解如何在 node.js 中使用回调。
我有部分代码分配给 socket.io
if (validate_room(room)) {
console.log('Room exist');
io.sockets.clients(room).forEach(
function (socket) {
console.log(socket.id);
});
//do some fucnction using socket interface
} else {
console.log('Room not exist');
//do other function using socket interface
}
你可以看到,这里我需要访问 io.sockets 对象。
validate_room 上面的函数
function validate_room(room) {
mysql_connection.query('SELECT * FROM rooms WHERE room = ' + mysql_connection.escape(room), function(err, rows, fields) {
if (err)
throw err;
if (rows.length.toString() > 0) {
console.log('Validate room - true: ', rows.length.toString());
return true;
}
console.log('Validate room - false: ', rows.length.toString());
return false;
});
}
我需要第二个函数来返回“true / false”。
当我使用“浏览器”时,我只是将回调放入另一个外部函数,但在这里我需要访问 socket.io 对象。
所以我想让“if(validate_room(room))”在这里停下来等待结果真/假。
也许有人可以指出我的想法,我在哪里犯了错误。
最好的问候马克