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);
}
答案 0 :(得分:3)
您的代码应该有效。只需更改此行:
myEmitter = new Npm.require('events').EventEmitter;
到
myEmitter = new (Npm.require('events').EventEmitter);
您不必使用此包,因为EventEmitter是nodejs核心的一部分。
要使其他文件可用,请不要使用var
关键字。
如果您在套餐中使用此功能,则必须确保在api.export
中使用package.js
将其导出到应用的其余部分。
答案 1 :(得分:2)
Meteor没有内置的事件发射器。但是,它允许您使用npm模块,例如示例代码中的模块。
您需要将npm包添加到您的应用中。有关详细信息,请参阅大气层documentation。