socket.io +使用带有回调的'emit'?

时间:2013-12-04 15:11:46

标签: node.js sockets socket.io

我的套接字出现问题,我的socket.emit完成之前我的服务器端代码正在执行。这是一个片段:

admin.getTh(function(th){
   socket.emit('GPS', {gpsResults: data, thresholds: th, PEMSID: PEMSID, count: count});
   count++;
   toolbox.drawPaths(function(ta){
        console.log(ta);
   });
});

所以我需要做的是通过socket.emit('GPS', ...)在客户端上执行的代码在toolbox.drawPaths发生之前完全完成。我试图像你emit那样在socket.on(..., function(){...})上抛回一个回调,但这似乎不是API的一部分。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您可能想要做的一件事是在服务器上创建一个在GPS完成时发出的事件。

例如:

服务器

socket.on ('GPS', function (data) {
  // Do work

  // Done doing work
  socket.emit ('messageSuccess', data);
});

<强>客户端

socket.emit('GPS', {gpsResults: data, thresholds: th, PEMSID: PEMSID, count: count});
socket.on ('messageSuccess', function (data) {
  //do stuff here
  toolbox.drawPaths(function(ta){
    console.log(ta);
  });
});