所以这就是我现在所做的:
server.js
socket.on('callSQL', function(){
connection.query('...', function(err, rows) {
socket.emit('sqlResponse', { 'sqlResponse': rows });
console.log(rows);
});
});
并在client.js
socket.emit('callSQL')
socket.on('sqlResponse', function(data){
console.log(data);
});
我的问题是可以做类似的事情:
var rows = socket.emit('callSQL');
收到sqlResponse
的东西还给我了吗?或者那不是sockets.io
做事的方式吗?
答案 0 :(得分:1)
鉴于套接字通信固有的异步特性,这是不可能的。一旦你的第一个'发射'被调用,流动就会继续。
这是最理想的,因为您希望在等待接收回复时避免“锁定”您的应用程序。
你已经拥有的解决方案,发出然后等待回应,是你最好的选择。