我有一个三向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)
})
})
答案 0 :(得分:0)
广播
时不支持回叫