Node.js使用spawn方法创建两个子进程,那么这两个子进程如何相互通信?

4
我有一个名为"A"的ELF程序,"A"是一个TCP服务器,另外我还有一个名为"B"的ELF程序,"B"是一个TCP客户端。当"B"开始运行时,它会向服务器发送消息,而不管服务器是否已准备就绪。
现在我必须使用Node.js将"A"和"B"作为两个子进程运行,如何确保"A"必须在"B"之前运行?
我采用以下方法实现:
socket.on('xxx', function() {    
    var A = spawn("A", ...);     
    ...      
    var B = spawn("B", ...);     
    setTimeout(B.sendToA, 500);       
    ...   
});

有没有好的想法?

谢谢你的帮助!


1
A在启动时会输出任何数据吗? - Ben Fortune
是的,当A启动时,它会输出一些信息,然后阻塞在readline上,等待nodejs调用A.stdin.write("yyy")。当A读取到"yyy"时,它将启动服务器函数,并输出信息,等待客户端连接。 - zwb
1个回答

1

由于您提到服务器在启动时输出了一些信息,因此您可以监听这些信息并在服务器启动后启动客户端。

类似于以下内容:

socket.on('xxx', function() {    
    var A = spawn("A", ...);
    A.stdin.write("yyy");
    A.stdout.on('data', function(e) {
        if(e.toString() === "yyy") {
            var B = spawn("B", ...);
            B.sendToA(); //I'm guessing this is a pseudo-method?
        }
    });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接