基本的に、ユーザーがログインしたときにバックグラウンド プロセスを開始する必要があります。バックグラウンド プロセスは機密データを返します。サーバー側はそれをさらに処理し、クライアントで利用できるようにする必要があります。
ここで Meteor.Publish メソッドと Subscribe メソッドが登場しますか? または、Meteor.methodsを使用する必要がありますか? 他のアプローチはありますか?
基本的に、ユーザーがログインしたときにバックグラウンド プロセスを開始する必要があります。バックグラウンド プロセスは機密データを返します。サーバー側はそれをさらに処理し、クライアントで利用できるようにする必要があります。
ここで Meteor.Publish メソッドと Subscribe メソッドが登場しますか? または、Meteor.methodsを使用する必要がありますか? 他のアプローチはありますか?
このような場合は、発行の代わりに呼び出しを使用することをお勧めします。これは、パブリッシュ機能の使用例が、ユーザーが何を見るべきかを決定するためのものであり、実際にはデータを処理すること (つまり、Web スクレイプなどを実行してこれを収集すること) ではなく、プロセスがブロックされている可能性があるため、すべてのクライアントが待機する可能性があるためです。このタスクを終了します。
隕石に移行することをお勧めします: https://github.com/oortcloud/meteorite
npm install -g meteorite
これで、 http://atmosphere.meteor.comにある素晴らしいコミュニティ パッケージのコレクションにアクセスできるようになります。
Ted Blackman のevent-horizonパッケージを使用すると、ユーザーがクライアントにログインしたときにイベントを作成できます。
次に、このためのイベントを作成できます。
クライアントJS
EventHorizon.fireWhenTrue('loggedIn',function(){
return Meteor.userId() !== null;
});
EventHorizon.on('loggedIn',function(){
Meteor.call("userloggedin", function(err,result) {
console.log("Ready")
if(result) {
//do stuff that you wanted after the task is complete
}
}
});
サーバーjs
Meteor.methods({
'userloggedin' : function() {
this.unblock(); //unblocks the thread for long tasks
//Do your stuff to Meteor.user();
return true; //Tell the client the task is done.
}
});