我是否可以从socket.emit请求收到响应,而无需为响应设置处理程序?

时间:2014-05-21 22:00:39

标签: sockets socket.io

所以这就是我现在所做的:

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做事的方式吗?

1 个答案:

答案 0 :(得分:1)

鉴于套接字通信固有的异步特性,这是不可能的。一旦你的第一个'发射'被调用,流动就会继续。

这是最理想的,因为您希望在等待接收回复时避免“锁定”您的应用程序。

你已经拥有的解决方案,发出然后等待回应,是你最好的选择。