【问题标题】:How to I gather all the responses from all emit callbacks?如何收集所有发出回调的所有响应?
【发布时间】:2015-04-07 16:21:44
【问题描述】:

我有一个三路 socket.io 项目,它使用 relay 服务器到 emit 命令到 hub controller 其中 on relay 发射将 emit 到所有节点。

我的问题是如何使用emit's 回调收集所有连接节点的所有响应?

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

这里是每个步骤的代码。

// 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

标签: javascript events asynchronous callback socket.io


【解决方案1】:

广播时不支持回调

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多