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

gjw*_*w80 5 sockets node.js 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);
   });
});
Run Code Online (Sandbox Code Playgroud)

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

Xin*_*nzz 5

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

例如:

服务器

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

  // Done doing work
  socket.emit ('messageSuccess', data);
});
Run Code Online (Sandbox Code Playgroud)

客户

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);
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 那么,这是否意味着 Socket.IO 中的 emit 函数不支持回调? (2认同)