Node.js的进程间事件发送器?
目前,我在应用程序中使用EventEmitter2作为消息总线,我非常喜欢它。
无论如何,现在我需要一个消息总线,它不仅在进程中工作,而且还在进程之间。 我理想的候选人会…
- …与EventEmitter2(一个“插入replace”)API兼容,
- …没有专门的服务器或外部服务(如数据库,消息队列等),仅使用操作系统资源,
- …用纯JavaScript编写,
- …在内存中运行,所以它不需要持久性。
我不需要的东西:
- 它不需要在Windows上运行,OS X和Linux都可以。
- 如果它只能在一台机器上运行,那就没有必要了。
任何想法或提示?
PS:如果你可以推荐一个可用的产品,那也挺好的,但是如果你能指出我自己如何做无服务器的东西,那也没关系。
我看到这些是你的select。
-
process.fork /发送 。 如果两个进程都是节点,则节点核心通过此API提供一个简单的事件驱动的IPC机制。 它与
process.fork
配对,所以如果你的进程是一个基于节点的master和几个基于节点的worker / support子process.send
,process.send
可能是一个可行的select。 http://nodejs.org/docs/latest/api/all.html#all_child_process_fork_modulepath_args_options- 基于事件的,而不是EventEmitter2的插件
- 双向
- 高效
- 只使用操作系统资源
- 在记忆中
- JavaScript的
-
使用节点核心的TCPnetworking通过unix域套接字进行连接。 http://nodejs.org/docs/latest/api/all.html#all_net_connect_options_connectionlistener
- 基于事件的原始数据stream,而不是高级消息
- 双向
- 在记忆中
- JavaScript的
-
很好的旧TCP。
- 基于事件的原始数据stream,而不是高级消息
- 双向
- 在记忆中
- JavaScript的
-
节点到节点的socket.io
- 基于事件,但不是EventEmitter2插件
- 双向
- 在记忆中
- JavaScript的
在所有情况下,一旦连接就会得到双向通信,但总是有第一个对等体(TCP或socket.io中的服务器,process.fork中的父进程)和第二个对等体(TCP或socket.io中的客户机)subprocess在process.fork)。