Meteor.js – 服务器上的全球事件?

Meteor.js有办法在服务器上发出全局事件吗? 例如

// how to set make myEmitter available across files/packages ? myEmitter = new Npm.require('events').EventEmitter; if(Meteor.isServer){ Meteor.methods({ 'foo' : function(){ myEmitter.emit('fooEvent', { 'bar' : 'hello!'}); } }); } 

 if(Meteor.isServer){ function doFoo(){ console.log('Foo done !'); } myEmitter.on('fooEvent', doFoo); } 

你的代码应该工作。 只要改变这一行:

 myEmitter = new Npm.require('events').EventEmitter; 

 myEmitter = new (Npm.require('events').EventEmitter); 

你不应该使用这个包,因为EventEmitter是nodejs核心的一部分。

要使其可用于其他文件只是不使用var关键字。

如果你在一个包中使用它,你必须确保你在你的package.js使用api.export将它导出到应用程序的其余部分。

meteor没有内置的事件发射器。 但是,它确实允许您使用npm模块,就像示例代码中的那样。

您需要将npm包添加到您的应用程序。 有关详细信息,请参阅气氛文档 。