用纯粹的伪代码解决这个问题有点棘手,但无论如何我都会给它一个镜头。
如果我理解正确,那么toDB和readDB是样本数据,并且有多个toDB。这意味着,你还会有一堆toXY与相应的readXY或一堆toPQ以及相应的readPQ。如果是这样,那么只要连接了toSOMETHING,就可以将该套接字存储在readSOMETHING下。如果密钥已经存在,那么你只需将toSOMETHING套接字添加到它。随着时间的推移它会是这个样子:
var socketData = {
readDB: {
sockets: [
<socket-object-toDB-1>,
<socket-object-toDB-2>,
<socket-object-toDB-3>
]
},
readXY: {
sockets: [
<socket-object-toXY-1>,
<socket-object-toXY-2>,
<socket-object-toXY-3>
]
}
}
然后你的伪代码可能会看起来像
socket.on('data', function(chunk){
decodeChunk(chunk.toString('hex'), function(response){
if(response.name === 'toDB'){
//write smth. to DB
if (socketData['readDB']) {
// already exists, simply append incoming socket to it's sockets array
socketData['readDB'].sockets.push(socket);
} else {
// does not exist, add it with a sockets array
socketData['readDB'] = {
sockets: [socket]
}
}
if(response.name === 'readDB'){
// Write to all sockets of readDB
socketData['readDB'].sockets.forEach(function(sock) {
sock.write('Whatever message\r\n');
});
}
});
})
可以共享有关你的代码的一部分? – Peanut
对不起,无法共享完整的代码,这就是为什么发布一些伪代码。希望它能澄清事情。 – glebcha