2012-11-02 66 views
3

我期待開發一個新的應用程序,它依賴於與外部服務API交談。實時Meteor.js http.get

例如,我想創建一個實時Twitter資訊提供,每次有新的推文時更新,我想使用Meteor作爲框架,但我不確定是否有可能讓Meteor自動顯示新的推文而沒有刷新頁面。

我知道我可以用Node.js和Socket.io來做到這一點,但是可以單獨做Meteor嗎?

由於

回答

2

Meteor.http獲取外部數據。 (docs

您可以在服務器中使用它並向集合中添加新的tweets。

訂閱此集合的所有客戶當然會保持同步。

5

基本上有兩種從外部來源檢索數據的方法。服務器上的Ajax或http請求。我最近解決了這個問題,但不得不使用第二種方法。

Client.js

Meteor.startup(function() { 
    Meteor.call('openSession', function(err, res) { 
     if(!err) Session.set('data', res); 
    }); 
}); 

Server.js

Meteor.methods({ 
    openSession: function() { 
     var fut = new Future(), url = 'http://www.google.com'; 

     // Do call here, return value with Future 
     Meteor.http.get(url, function(err, res){ 
      fut.ret(res); 
     }); 

     // Force method to wait on Future return 
     return fut.wait(); 
    } 

}); 

正如你所看到的,我不得不用未來做流星與異步HTTP請求一起玩。但是,這與在服務器端定義方法一樣簡單,然後在客戶端調用該方法。

+0

不要忘了添加http軟件包'meteor add http' –