1

オブザーブのドキュメントによると、停止関数を定義して呼び出す必要があります。そうしないと、オブザーバーが永久に実行されます。重要なのは、たとえば、ユーザーが予想時間より前にブラウザを閉じることにした場合、どのように停止を呼び出すかです。接続が切れた場合、どうすれば停止と呼ぶことができますか?

4

2 に答える 2

3

これを行うには、公開内で呼び出すことができます。

this.session.socket.on("close", function() { /*do your thing*/});

だから、もしあなたがオブザーバーを止めたいのなら...

Meteor.publish("something", function () {

  // ...
  // your observers code here
  // ...

  self.onStop(function () {
    handle.stop();
  });
  this.session.socket.on("close", function() {
    handle.stop();
  });
});

答えはここにあります。ZhouHuabingに感謝します。

于 2012-10-16T17:27:32.460 に答える
3

実際に切断について心配する必要はありません。サブスクリプションが停止するたびに(クライアントが切断するか、unsubを呼び出すか、または呼び出すかどうかに関係なくthis.stop)、サーバーはアクティブなサブスクリプションを破棄する前に、登録されているすべてのonStopハンドラーを実行します。(ちなみに、切断は切断時にすぐには発生しませんが、最終的には発生します。クライアントが再接続してセッションを再開しようとした場合に備えて、少し待つことをお勧めします。)

あなたがする必要があるのは、onStopあなたのコードが使用したリソースをクリーンアップするハンドラーを登録することを確認することです。繰り返しますが、サブスクリプションが停止されたときはいつでもそれが発生する必要があります。 onStop右フックです。stopたとえば、例の最初のコードスタンザのように、アクティブな監視を呼び出すことが非常に重要です。

于 2013-02-27T23:02:55.573 に答える