如何收集所有发出回调的所有响应?

How to I gather all the responses from all emit callbacks?

我有一个三向 socket.io 项目,它使用 relay 服务器来 emit 命令 hub controller on [=11] =] 发射将 emit 到所有节点。

My question is how do I gather all the responses from all the connected nodes, using emit's callback?

该回调将触发多次,每个节点连接一次。有没有办法收集每个响应并将它们发送到初始发出回调。

这里是每个步骤的代码。

// RELAY MESSAGING CLIENT (SENDS MESSAGES TO ADMIN)

io.emit("pricing-relay", {
  sku: "AMZ-PROD"
}, function(errString, responsesFromAllNodes){
  // response from `socket.on("pricing-relay"`)
  // console.log(responsesFromAllNodes)
  /*
     [
        "invalid something", null,
        null, true,
        null, false,
        "invalid something", null,
        null, true,
     ]
  */
})

// HUB CONTROLLER SERVER (DISTRIBUTES TO ALL CONNECTED NODES)

socket.on("pricing-relay", function(data, callback){
  var responses = []
  io.emit("pricing", data, function(errString, response){
    response.push([errString, response])
    // when these are all done responding
    // send callback(null, responses)
  })
})

// DRONE CLIENT (PIECE EXECUTING ASYNC CODE)

io.on("pricing", function(data, callback){
  return changepricing(data, function(err, result){
    if(err) return callback(err.message, result)
    return callback(null, result)
  })
})

Callbacks are not supported when broadcasting