目前,我正在使用事件发射器2作为我的应用程序中的消息总线,我真的很喜欢它。
不管怎样,现在我需要一个消息总线,它不仅可以在进程内工作,而且可以在进程间工作。我理想的候选人是……
- …与 EventEmitter2 API 兼容(“直接替代品”),
- ...无需专用服务器或外部服务(例如数据库、消息队列...)即可工作,仅使用操作系统资源,
- …用纯 JavaScript 编写,
- ...在内存中运行,因此不需要持久性。
我做什么not need:
- 它不需要在 Windows 上运行,OS X 和 Linux 都可以。
- 如果它只在单台机器上运行也没关系,它不需要网络感知。
有什么想法或提示吗?
PS:如果你能推荐一个可用的产品就好了,但如果你能给我指出如何自己做无服务器事情的方向也很好。
以下是我所看到的您的选择。
-
进程.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
-
使用节点核心的 TCP 网络通过 unix 域套接字进行连接。http://nodejs.org/docs/latest/api/all.html#all_net_connect_options_connectionlistener
- 仍然基于事件,但原始数据流而不是高级消息
- 双向
- 在记忆中
- javascript
-
很好的老TCP。
- 仍然基于事件,但原始数据流而不是高级消息
- 双向
- 在记忆中
- javascript
-
节点到节点套接字.io
- 基于事件,但不是 EventEmitter2 drop-in
- 双向
- 在记忆中
- javascript
在所有情况下,一旦连接,您就会获得双向通信,但始终存在第一个对等点(TCP 或 socket.io 中的服务器,process.fork 中的父进程)和第二个对等点(TCP 或 socket.io 中的客户端, process.fork 中的子进程)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)