2017-10-05 15 views

回答

2

如果您想要實現平臺無關的事件系統,您可以查看任何消息代理,如RabbitMQ。或者你可以使用Redis PUB/SUB來實現它。

1

Node.js EventEmitter類的實例可以監聽來自不同平臺(如C或C++)的事件通知嗎?

不,不是直接。 node.js EventEmitter類只能在Javascript中使用(其實現完全是Javascript),因此爲了觸發事件,某些Javascript必須在Node.js過程的EventEmitter對象的Javascript中調用.emit()

如果你有什麼地方運行一些C或C++代碼,你想觸發一個EventEmitter的事件,那麼你就必須以某種方式從C調用node.js的一些JavaScript代碼/ C++代碼,那麼就可能調用EventEmmitter對象上的方法(使用Javascript)。

如果您的C/C++代碼位於node.js本機代碼插件中,那麼您可能會觸發某種從C/C++代碼回調到Javascript的回調,就像在C中實現的其他節點內部回調一樣/ C++可以觸發回調(例如執行setTimeout())。如果您的C/C++代碼在另一個進程中(例如,不在node.js中),那麼您必須與node.js進程(如http請求)進行某種進程間通信以連接到node.js中的一些代碼要求它代表您執行某些操作(如發出事件)。

2

如果您創建EventEmitter,則必須在此實例上發出事件。如果你想在C/C++中觸發事件,你必須爲它寫一個接口。你會在node-gyp repo找到一個起點。