Meteor.js - 服务器上的全局事件?

时间:2013-12-08 02:38:22

标签: node.js meteor

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);
}

2 个答案:

答案 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