当前位置: 首页 > 面试题库 >

在Node.js中的两个不同进程之间进行通信

子车海
2023-03-14
问题内容

问题是:

  • 假设我们有两个正在运行的Node.js进程:example1.jsexample2.js

  • 结果中example1.jsfunc1(input)返回的函数result1

  • 是否有一种从内部example2.js调用func1(input)并获得result1结果的方法?

从我对Node.js的了解中,我仅找到一种使用套接字进行通信的解决方案。但是,这不是理想的,因为它将需要一个进程在端口上侦听。如果可能,我希望避免这种情况。

编辑:
经过一些问题,我很想补充一点,在层次结构example1.js中不能是的子进程example2.js,而恰恰相反。同样,如果有帮助,则只能有一个example1.js处理自己的数据,而有许多example2.js处理第一个过程的数据。


问题答案:

您描述的用例让我想到了dnode,您可以使用它轻松地公开由不同进程调用的函数,这些进程由使用网络套接字(和socket.io的dnode协调),因此您可以在浏览器中使用相同的机制。

另一种方法是使用消息队列,不同的消息队列有很多良好的绑定。

据我所知,最简单的方法是使用child_process.fork():

这是生成spawn()节点进程的功能的特例。除了在普通的ChildProcess实例中包含所有方法之外,返回的对象还内置了一个通信通道。子频道上的事件写入child.send(message, [sendHandle])并通过该'message'事件接收消息。

因此,对于您的示例,您可以有example2.js:

var fork = require('child_process').fork;
var example1 = fork(__dirname + '/example1.js');

example1.on('message', function(response) {
  console.log(response);
});

example1.send({func: 'input'});

和example1.js:

function func(input) {
  process.send('Hello ' + input);
}

process.on('message', function(m) {
  func(m);
});


 类似资料:
  • 问题内容: 我正在用Go编写负载平衡的服务器系统。 负载平衡服务器将与多个应用程序服务器通信并处理请求。这些服务器都可以在同一台计算机或网络上运行。 我已经找到了网络,但是现在我需要找到一种最佳的方式来使负载均衡器与本地应用程序服务器进行通信。使用-networking似乎并非最佳选择。 我正在尝试通过和系统调用共享内存,但是没有找到任何有效的示例,并且该软件包也完全没有文档说明。 有人可以为我提

  • 问题内容: 我有两个文件,并且我想对两个文件进行逐行操作。(换句话说,每个文件的第一行都与之对应,第二行等等)。现在,我想到了一些稍微麻烦的方法来同时遍历两个文件。 但是 ,这是Python,因此我认为这里有一些语法速记。 换句话说,是否有一些简单的方法可以适应 这样就可以同时从两个文件中提取数据? 问题答案: Python 2: 使用加入了两个迭代器。 如果文件长度不相等,请使用。 在Pytho

  • 问题内容: 有两个Java文件,Server.java和Client.java。两者都放在单独的容器中。 DOCKER FILES: 我用于服务器的dockerfile(位于名为“ Server”的文件夹中)为: 客户端的dockerfile(位于名为``Client’‘的文件夹中)为: 构建容器: 使用以下容器构建容器 运行容器: 我使用命令运行图像。然后我首先运行serverimage。 我得

  • 问题内容: 我是React的新手,我想问一个战略问题,关于如何最好地完成必须在同级组件之间传递数据的任务。 首先,我将描述任务: 假设我有多个组件,它们是一个单亲的子代,它们通过数组动态地向下传递选择框。每个框在其初始状态下具有完全相同的可用选项,但是一旦用户在一个框中选择了某个特定选项,则必须将其作为所有其他框中的选项禁用,直到将其释放。 这是(傻)代码中的相同示例。(我用作创建选择框的简写。)

  • 本文向大家介绍c# 如何实现不同进程之间的通信,包括了c# 如何实现不同进程之间的通信的使用技巧和注意事项,需要的朋友参考一下   进程之间的通信是为了解决不同进程之间的数据传输问题,这样可以让不同程序交互数据。实现进程通信的方式:1、剪切板;2、COM;3、内存映射文件;4、WCF 1、剪切板Clipboard在进程间传送对象   剪切板是一个供应用程序使用的公有区域。在.NET中定一个了一个D

  • 我的应用程序中有三个片段,其中需要传递和接收数据。我应该如何进行他们之间的沟通。我试图参考许多网站,但没有解决方案。 请给我推荐一些好的链接。 提前感谢。