2013-12-08 61 views
1

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

回答

3

你的代碼應該可以工作。只是改變這一行:

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

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

你不應該使用這個包,因爲EventEmitter爲核心的NodeJS的一部分。

要使其可用於其他文件,請不要使用var關鍵字。

如果你在一個包中使用它,你必須確保你在你的package.js中使用api.export將它導出到應用程序的其餘部分。

2

流星不具有一個內置的事件發射器。但是,它確實允許您使用npm模塊,就像示例代碼中的那樣。

您需要將npm包添加到您的應用程序。詳情請看documentation