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包添加到您的应用程序。 有关详细信息,请参阅气氛文档 。