外部サービス API との対話に依存する新しいアプリケーションの開発を検討しています。
たとえば、新しいツイートがあるたびに更新されるリアルタイムの Twitter フィードを作成したい、フレームワークとして Meteor を使用したいのですが、ページを更新せずに Meteor に新しいツイートを自動的に表示させることが可能かどうかはわかりません。
Node.js と Socket.io でこれを実行できることはわかっていますが、Meteor だけで実行できますか?
ありがとう
外部ソースからデータを取得するには、基本的に 2 つの方法があります。サーバー上の Ajax または http 要求。最近これに取り組みましたが、2 番目の方法を使用する必要がありました。
クライアント.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 リクエストと一緒に再生する必要がありました。ただし、サーバー側でメソッドを定義し、クライアント側でそれを呼び出すのと同じくらい簡単です。
Meteor.http
外部データを取得する必要があります。(ドキュメント)
これをサーバーで使用して、新しいツイートをコレクションに追加できます。
もちろん、このコレクションを購読しているすべてのクライアントは、同期を維持します。