我正在寻找开发一个依赖于与外部服务 API 对话的新应用程序。
例如,我想创建一个实时 Twitter 提要,每次有新推文时都会更新,我想使用 Meteor 作为框架,但我不确定 Meteor 是否可以在不刷新页面的情况下自动显示新推文。
我知道我可以用 Node.js 和 Socket.io 做到这一点,但是否可以只用 Meteor 做到这一点?
谢谢
从外部来源检索数据基本上有两种方法。服务器上的 Ajax 或 http 请求。我最近解决了这个问题,但不得不使用第二种方法。
客户端.js
Meteor.startup( function() {
Meteor.call( 'openSession', function( err, res ) {
if( !err ) Session.set( 'data', res );
});
});
服务器.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();
}
});
如您所见,我不得不使用 Future 让 Meteor 与异步 http 请求一起播放。但是,它就像在服务器端定义方法一样简单,然后在客户端调用它。