Присутствие пользователя не обновляется на сервере при выходе из-за неактивности пользователя или браузера

Когда на одном экране мы добавляем только каналы, у которых установлено значение по умолчанию onlyWhenActive (которое по умолчанию равно true при вызове channel.enter()), — при переходе в режим бездействия выполняется неверный вызов сервера для обновления этих каналов.

Как воспроизвести

  • Сначала отключите плагин чата, если он у вас включён (это важно, так как плагины чата выполняют вызов .enter({onlyWhenActive: false}) на всех экранах с опцией 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.

Я создал pull request:

6 лайков

Благодарим за тщательную отладку и выявление корневой причины… Мы рассмотрим это на этой неделе и посмотрим, сможем ли мы объединить исправление!

6 лайков

@david довёл это до финиша, и теперь всё объединено :tada:

Спасибо @AhmedLoud за то, что подняли эту тему и отправили PR :clap:

7 лайков