Node.js 的进程间和服务器间事件发射器/监听器?

2023-11-27

目前,我正在使用事件发射器2作为我的应用程序中的消息总线,我真的很喜欢它。

不管怎样,现在我需要一个消息总线,它不仅可以在进程内工作,而且可以在进程间工作。我理想的候选人是……

  • …与 EventEmitter2 API 兼容(“直接替代品”),
  • ...无需专用服务器或外部服务(例如数据库、消息队列...)即可工作,仅使用操作系统资源,
  • …用纯 JavaScript 编写,
  • ...在内存中运行,因此不需要持久性。

我做什么not need:

  • 它不需要在 Windows 上运行,OS X 和 Linux 都可以。
  • 如果它只在单台机器上运行也没关系,它不需要网络感知。

有什么想法或提示吗?

PS:如果你能推荐一个可用的产品就好了,但如果你能给我指出如何自己做无服务器事情的方向也很好。


以下是我所看到的您的选择。

  1. 进程.fork/发送。如果两个进程都是节点,则节点核心通过此 API 提供简单的、事件驱动的 IPC 机制。它与process.fork因此,如果您的进程是一个基于节点的主进程和多个基于节点的工作/支持子进程,process.send可能是一个可行的选择。http://nodejs.org/docs/latest/api/all.html#all_child_process_fork_modulepath_args_options

    • 基于事件,但不是 EventEmitter2 drop-in
    • 双向
    • 高效的
    • 仅使用操作系统资源
    • 在记忆中
    • javascript
  2. 使用节点核心的 TCP 网络通过 unix 域套接字进行连接。http://nodejs.org/docs/latest/api/all.html#all_net_connect_options_connectionlistener

    • 仍然基于事件,但原始数据流而不是高级消息
    • 双向
    • 在记忆中
    • javascript
  3. 很好的老TCP。

    • 仍然基于事件,但原始数据流而不是高级消息
    • 双向
    • 在记忆中
    • javascript
  4. 节点到节点套接字.io

    • 基于事件,但不是 EventEmitter2 drop-in
    • 双向
    • 在记忆中
    • javascript

在所有情况下,一旦连接,您就会获得双向通信,但始终存在第一个对等点(TCP 或 socket.io 中的服务器,process.fork 中的父进程)和第二个对等点(TCP 或 socket.io 中的客户端, process.fork 中的子进程)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 的进程间和服务器间事件发射器/监听器? 的相关文章

随机推荐

  • 中断的易失性与内存屏障

    Let x and y是主代码和中断代码之间共享的变量 我的想法volatile的一点是 它只是并且始终需要在主代码中使用的硬件变量和中断变量 每次使用x and y通过禁用中断来保证主代码中的原子性 Do x and y确实需要volat
  • LINQ-To-SQL 和多对多关系删除

    我在两个表之间存在多对多关系 比如说 朋友 和 食物 如果朋友喜欢某种食物 我会在 FriendsFoods 表中插入一行 如下所示 ID Friend Food 1 Tom Pizza FriendsFoods 有一个主键 ID 以及分别
  • 数组连接返回空数组

    我使用以下方法将多个项目添加到数组中concat在事件处理程序中如下 var selectedValues each selected levels data kendoListBox dataSource data function i
  • 如何以编程方式为 Java 中的 AWS Cognito 用户池中的已登录用户启用或禁用 MFA?

    我正在使用以下代码 但它不会更改 AWS 中的任何内容 尽管它不会返回文档中所述的任何内容 https docs aws amazon com cognito user identity pools latest APIReference
  • jQuery:删除除内部元素之外的元素

    有没有办法删除除内部元素之外的元素 div class gallery a href images rep png title rep img src http example com uploads rep png class thumb
  • 是否可以将预览、图像分析和视频捕获与 CameraX 结合起来?

    是否可以绑定Preview ImageAnalysis and VideoCapture同时 成对组合 所有可能的组合 即 Preview ImageAnalysis Preview VideoCapture and ImageAnalys
  • 如何从magento中的cms页面传递带有块表单内容的参数

    我想传递一个带有块代码的变量 例如magento中的JSON类型 block type multibanners multibanners category id 9 name multibanners alias multibanners
  • ContentResolver.insert 始终返回 null

    我试图通过按下按钮来设置自定义铃声 但从 ContentResolver 的插入方法中获取 null 以下是负责设置铃声的代码 我检查了 stackoverflow 本身 一些用户说它对他们有用 但在我的例子中 我将变量 newUri 设置
  • UserPrincipal 对象中的域名在哪里?

    我正在使用System DirectoryServices ActiveDirectory类来查找所有 Active Directory 用户 代码很简单 var context new PrincipalContext ContextTy
  • 使用 Firebase 进行分页/无限滚动

    我有一个我创建的节点的子节点childByAutoId 我正在尝试在 TableView 中使用它进行分页 但我不知道如何操作 我的数据库如下所示 items KKM7Fv8H7dCiD2xChYB userID 1231231 KKM7F
  • VBA 分割字符串循环

    我正在尝试拆分字符串并创建一个循环来遍历列中的单元格 存在一些挑战 拆分适用于ActiveCell only 循环遍历所有单元格直到 LastRow 但填充所有单元格 分割字符串值来自ActiveCell only 数组的分割开始于i 0即
  • HTML5 输入标记中的数字格式

    这是我的输入
  • ReactJS Array.push 函数在 setState 中不起作用

    到目前为止 我正在制作一个原始的测验应用程序 其中包含 3 个问题 全部是对还是错 在我的handleContinue方法有一个调用 将用户输入从无线电表单推送到userAnswers大批 第一次运行效果很好handleContinue 之
  • Gridview - 单击图像可在 Viewpager 中查看图像

    这是一个从 json 获取图像的 gridview 而且效果很好 我想单击此网格视图中的图像以显示完整图像并可以滑动它 我发现这个问题的解决方案是使用Viewpager 如何在gridview中点击图片来显示图片并且可以滑动 您可以更轻松地
  • 监听Mac键盘播放/暂停事件

    某些 Mac 应用程序 例如 iTunes 和 Spotify 会对某些 Apple 键盘上的播放 暂停 下一个 上一个按钮做出反应 想必他们正在利用某种 NSNotification 我该如何做同样的事情呢 我通过使用以下命令对 NSAp
  • 捆绑包有问题

    我尝试命令bundle install local但它显示问题 bash usr local bin bundle usr local bin ruby bad interpreter No such file or directory 请
  • \n 在 python 中的工作[重复]

    这个问题在这里已经有答案了 我目前正在学习 python 课程 当谈论转义序列时 他们谈到 n 用于在新行中打印字符串 但是当它以以下方式使用时为什么我会得到不同的输出 gt gt gt st Hello nWorld gt gt gt s
  • Python:os.path.isfile 无法识别以数字开头的文件

    所以 我正在尝试合并os path isfile or os path exists进入我的代码 在搜索以字母开头的文件名时成功找到某些常规文件 pdf png 我正在使用的文件命名标准 并且不能因用户而更改 以数字开头 随后无法使用相同的
  • 没有 main 方法的 C# 类

    我正在学习 C 而且对它很陌生 所以请原谅我提出这个看似愚蠢的问题 我有一些 Java 经验 我注意到 C 程序也需要一个main 他们的主类中的方法 如果我想创建一个不是主类的类 即导入到主类中的类 该怎么办 我尝试这样做 当我编译时 通
  • Node.js 的进程间和服务器间事件发射器/监听器?

    目前 我正在使用事件发射器2作为我的应用程序中的消息总线 我真的很喜欢它 不管怎样 现在我需要一个消息总线 它不仅可以在进程内工作 而且可以在进程间工作 我理想的候选人是 与 EventEmitter2 API 兼容 直接替代品 无需专用服