Etherpad-lite: колодки молча отключаются, когда браузер приостанавливает фоновую вкладку

Созданный на 3 апр. 2020  ·  22Комментарии  ·  Источник: ether/etherpad-lite

Моя команда использует etherpad-lite для внутренней работы по планированию и для документирования открытых встреч сообщества, поэтому у нас часто открыто несколько планшетов на разных вкладках в течение продолжительных периодов времени. Много раз, когда панель теряет соединение (из-за того, что кто-то выключил свой ноутбук, и его машина перешла в спящий режим, или из-за того, что браузер разгружает вкладки, которые некоторое время находились в фоновом режиме), панель будет отображать сообщение «отключено». Но не всегда.

Мы регулярно сталкиваемся с бесшумными отключениями — если вы случайно заметите это и перезагрузите, пэд снова подключается без проблем. Но если вы вернетесь к вкладке и _не_ заметите, что она отключена, внесенные вами изменения не будут сохранены, и вы легко потеряете много работы. Мы прекрасно знаем, почему сокет может потерять соединение, но неясно, почему иногда появляется предупреждение, а иногда нет.

Это известная проблема? Мы странны в том, как мы используем эфирные подушечки? Я чувствую себя немного неловко из-за того, что регистрирую это как ошибку, но я много искал и нигде не могу найти подробного описания этой проблемы.

Waiting on Testing

Самый полезный комментарий

Хорошо, круто, у меня есть патч, который решает огромную часть проблемы.

  • [x] Не разрешает редактирование во время повторного подключения.
  • [ ] Получает правильный номер версии документа перед отправкой следующего набора изменений.

Если я не могу решить задачу № 2, я всегда могу использовать метод внутренней перезагрузки, чтобы загрузить блокнот обратно на страницу.

Это должно приземлиться сегодня вечером, сейчас время ужина.

Все 22 Комментарий

Нет, вы правильно используете Etherpad, и это не известная проблема. У вас должен быть отключен msg и оверлей. Можете ли вы предоставить некоторые точные шаги для репликации?

Спасибо за то, что дали нам знать.

Это логика состояния подключения: https://github.com/ether/etherpad-lite/blob/develop/src/static/js/pad_connectionstatus.js

И логика автоматического переподключения: https://github.com/ether/etherpad-lite/blob/develop/src/static/js/pad_automatic_reconnect.js

У нас была проблема с пользователем с нестабильным интернет-соединением. Эту ошибку довольно сложно воспроизвести, и она действительно серьезная. Мы безуспешно пытались имитировать нестабильное соединение.
Мы используем Etherpad 1.7.5.

Глядя на это сейчас.

Подождите.. В settings.json

  /*
   * Time (in seconds) to automatically reconnect pad when a "Force reconnect"
   * message is shown to user.
   *
   * Set to 0 to disable automatic reconnection.
   */
  "automaticReconnectionTimeout": 0,

Это по умолчанию, в чем тут логика? Конечно, это не хорошая настройка по умолчанию?! :D cc @muxator есть идеи, в чем тут дело?

Мой метод начального тестирования:

  1. подключиться к колодке. Введите материал.
  2. свернуть браузер.
  3. узел killall (заставляет сервер исчезнуть)
  4. подождите несколько минут (мне бы хотелось знать, какой здесь тайм-аут)
  5. вкладку обратно в браузер, посмотрите, есть ли у меня сообщение msg.

То, что я ожидал, произойдет.

  1. Отключенное сообщение будет видно.

Что происходит.

  1. Отключенное сообщение видно.

Другой подход..

  1. подключиться к колодке. Введите материал.
  2. свернуть браузер.
  3. положить ноутбук в спящий режим
  4. вывести ноутбук из спящего режима
  5. вкладку обратно в браузер, посмотрите, есть ли у меня сообщение msg.

Что я ожидаю:
Вернитесь в браузер, посмотрите, будет ли он повторно подключаться

Что просходит:
Попробуйте ввести, и это отключит пользователя!

Далее я собираюсь протестировать ожидание повторного подключения.

"automaticReconnectionTimeout": 0,

Он был представлен здесь: https://github.com/ether/etherpad-lite/commit/009cd3124370d44a9c567332bf3be63826fd95b4#diff -8ab11a170627f11a32a1d642d7114743R126.

Хорошие новости. Я могу повторить.

  1. подключиться к колодке. Введите материал.
  2. свернуть браузер. (наверное не обязательно)
  3. положить ноутбук в спящий режим
  4. вывести ноутбук из спящего режима
  5. вкладку обратно в браузер, посмотрите, есть ли у меня сообщение msg.

Что я ожидаю:
Вернитесь в браузер и посмотрите, будет ли он повторно подключаться через x секунд.

Что просходит:
Он утверждает, что повторно подключен, но ввод чего-либо отправляет неверный набор изменений.

https://www.youtube.com/watch?v=COyju-u9Sek

Я думаю, что смогу свести тест к простому исчезновению сети с помощью сетевых инструментов.

  "automaticReconnectionTimeout": 0,

Он был представлен здесь: 009cd31#diff-8ab11a170627f11a32a1d642d7114743R126.

Хорошо, спасибо, и обратите внимание, что @lpagliari сейчас работает над другими проектами, поэтому я не смогу это исправить. Я не думаю, что она «вызвала» ошибку, но я нахожу эту настройку просто странной.. Такое ощущение, что она должна быть включена по умолчанию…

Я не думаю, что она «вызвала» ошибку, но я нахожу эту настройку просто странной.

Я тоже, без обид :-)

омг, мне очень жаль, я открыл эту тему на вкладке и напечатал ответ, но так и не нажал кнопку "Отправить"!

Мой опыт тоже сложно воспроизвести. Я знаю, что это звучит нелепо, но самое близкое, что я могу подобрать, было что-то вроде:

1) открыть эфирпад во вкладке
2) оставив etherpad в качестве активной вкладки, закройте крышку моего ноутбука и подождите несколько секунд, пока машина не заснет и не потеряет сетевое соединение.
3) открыть ноутбук и вернуться на вкладку с помощью etherpad

Обычно я вижу на этой вкладке сообщение о «повторном подключении», а иногда оно действительно восстанавливает соединение. Но не всегда, хотя сообщение о "переподключении" пропадает. Когда это происходит, нет визуального намека на то, что то, что вы печатаете, не сохраняется.

Пара вещей, о которых я задавался вопросом:

  • если моему ноутбуку требуется слишком много времени для восстановления сетевого соединения, возможно ли, что etherpad тем временем отказывается от попыток повторно подключиться к серверу
  • Я не уверен, но я чувствую, что щелчок по эфирной панели может отклонить сообщение о «повторном подключении» ... может быть, это отменяет его? Или, по крайней мере, отклоняет, чтобы вы никогда не видели последующее сообщение об ошибке

Так что, возможно, моя попытка воспроизвести была не такой смешной, как я думал! Я так рада, что мы не единственные, кто видел это. Спасибо _большое_ за изучение.

Извините, что на меня снова накинулись дети. Я должен спрыгнуть с этого сейчас.

одна рука хах.

  1. подключиться к пэду
  2. используйте неуклюжий, чтобы отбросить все пакеты
  3. тип смт
  4. неуклюжий
  5. после реконнекта снова пробую тип
    chanfset ошибка

Хорошо, круто, у меня есть патч, который решает огромную часть проблемы.

  • [x] Не разрешает редактирование во время повторного подключения.
  • [ ] Получает правильный номер версии документа перед отправкой следующего набора изменений.

Если я не могу решить задачу № 2, я всегда могу использовать метод внутренней перезагрузки, чтобы загрузить блокнот обратно на страницу.

Это должно приземлиться сегодня вечером, сейчас время ужина.

Хорошо, у меня есть время только на временное исправление, которое перезагружает планшет при повторном подключении, это не идеально, но работает.

Возможно, он не срабатывает на устаревшем. Я протестировал состояния отключения, ненадежные состояния, состояния сна / бодрствования, и, похоже, он ведет себя соответствующим образом.

Это намного лучший UX, чем то, что в настоящее время находится в разработке, но на самом деле содержимое панели должно перезагружаться без обновления всей страницы. По крайней мере, полное обновление страницы в Etherpad дешево, но все же это хакерство.

Это просто фантастика, спасибо!!

Не позволяет редактировать во время повторного подключения.

Серьезно, одно только это изменение устранит столько душевной боли. (Ну, «так много», возможно, преувеличение, потому что проблема тихого отключения кажется относительно редкой. Но когда вы теряете кучу работы, потому что думали, что подключены, это действительно очень плохо.)

Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время в ней не было активности. Он будет закрыт, если никакой дальнейшей активности не произойдет. Спасибо за ваш вклад.

очень хотелось бы увидеть эту землю!

См. выше, исправление было объединено.

О, здорово, спасибо! С нетерпением жду 1.8.5!

@ryanpitts @joassouza Недавно мы внесли некоторые изменения, чтобы улучшить обработку повторных подключений (см. #4331). Пожалуйста, следите за регрессиями при обновлении.

Спасибо! Я видел, что вышла версия 1.8.6, и я планирую обновить ее либо на этой, либо на следующей неделе.

@ryanpitts : изменение, о котором я говорю, отсутствует в версии 1.8.6; он появится в следующем релизе.

На заметку: в версии 1.8.6 есть несколько ошибок, связанных с сессиями . Если вы используете HTTP API, вам, вероятно, потребуется выбрать 3886e95c83af106f812da39987a304201689081d и 4332affba6264cc886878b36873266f9e1dbc457 (или просто проверить ветку develop ).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги