如何收集所有发出回调的所有响应?
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
我有一个三向 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