Node.js EventEmitter
类的实例可以收听来自不同平台(如C或C ++)的事件通知吗?
答案 0 :(得分:2)
如果您创建EventEmitter
,则必须在此实例上发出事件。如果要在C / C ++中触发事件,则必须为其编写接口。您会在node-gyp repo找到一个起点。
答案 1 :(得分:2)
如果您想要实现与平台无关的事件系统,您可以查看任何消息代理,例如RabbitMQ。或者您可以使用Redis PUB / SUB实现它。
答案 2 :(得分:1)
Node.js
EventEmitter
类的实例可以收听来自不同平台(如C或C ++)的事件通知吗?
不,不是直接的。 node.js EventEmitter
类仅适用于Javascript(其实现完全是Javascript),因此为了触发事件,一些Javascript必须在node.js进程中的EventEmitter对象上调用Javascript中的.emit()
如果某些C或C ++代码在某处运行并且您想在EventEmitter
中触发事件,那么您必须以某种方式从您的C / C ++代码中调用node.js中的一些Javascript代码然后可以调用EventEmmitter
对象上的方法(在Javascript中)。
如果您的C / C ++代码在node.js本机代码插件中,那么您可能会从C / C ++代码中触发某种类型的Javascript回调,就像在C / C中实现的其他节点内部一样C ++可以触发回调(例如setTimeout()
的实现)。如果您的C / C ++代码在另一个进程中(例如,不在node.js内),那么您必须与node.js进程(如http请求)进行某种进程间通信才能连接到node.js中的一些代码要求它代表你做某事(比如发出一个事件)。