同じ画面で、すべてのチャンネルがデフォルトの onlyWhenActive(channel.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 となるべきところです。
プルリクエストを開きました。
