ユーザーまたはブラウザの非アクティブ化により、ユーザーのプレゼンスが退席時にサーバーを更新していません

同じ画面で、すべてのチャンネルがデフォルトの onlyWhenActivechannel.enter() を呼び出す際にデフォルトで true になります)のみを持つ場合、アイドル状態になってこれらのチャンネルを更新するためにサーバーに誤った呼び出しが行われます。

再現方法

  • まず、チャットプラグインが有効になっている場合は無効にします(チャットプラグインは、すべての画面で onlyWhenActive オプションを false に設定して .enter({onlyWhenActive: false}) を呼び出すため、これは重要です)。

  • デモのためにチャンネルを追加します。ここでは topic-presence-display.js を選択し、次を追加しました。

      @on("init")
      _init() {
        this._presentChannel = this.presence.getChannel('/presence-idle-demo');
        this._presentChannel.enter();
      },
    
  • ブラウザのネットワークコンソールを開いた状態で、任意のトピックを開きます。/presence/update への最初の呼び出しが表示されるはずです。

  • ブラウザウィンドウを最小化し(ネットワークタブを開いたまま)、10秒強待ちます(これはデフォルトのブラウザの非アクティブ時間です)。

  • ブラウザを再度開き、/presence/update に対して行われた最新の呼び出しを確認します。

現在の結果:

本来は leave_channels[]: /presence-idle-demo となるべきところです。

プルリクエストを開きました。

「いいね!」 6

丁寧なデバッグと根本原因の特定、ありがとうございます。今週中にレビューし、修正をマージできるか確認します!

「いいね!」 6

@david がこれを完了させ、マージされました :tada:

これを提起し、PRを提出してくれた @AhmedLoud に感謝します :clap:

「いいね!」 7