Продолжение: прерванная правка поста в iOS и непрерывность соединения HTTP/3
Я столкнулся с практическим примером проблемы непрерывности соединения, о которой я спрашивал ранее.
21 октября 2026 года, когда я редактировал пост на моем частном сервере Discourse на iPhone 16 Pro, используя PWA Safari, синяя полоса Сохранение застряла. Я только что продиктовал дополнительные лекционные заметки.
Редактор стал недоступен, включая случаи, когда я касался синей полосы «Сохранение», поэтому я не мог скопировать несохраненный текст в другое место.
После более длительного ожидания, чем обычно, я вручную отключил Wi-Fi, чтобы попробовать использовать мобильную связь. Страница не изменилась сразу, но последующие попытки навигации также казались зависшими.
Затем я изучил логи Caddy и nginx, а также историю версий поста.
В 12:20:08 BST:
-
Caddy зафиксировал запрос HTTP/3
PUT /posts/70695из университетской сети Wi-Fi, где были получены все 1000 байт тела запроса, но статус был0. -
nginx зафиксировал соответствующий запрос как HTTP
400, без времени обработки маршрута Discourse или upstream. -
Два других запроса с iPhone, отправленных через мобильную сеть, также получили HTTP
400в ту же секунду. -
В это время не было записано успешной версии поста.
Последующая правка успешно завершилась в 12:20:55 BST, но продиктованный текст отсутствовал.
Также была успешная автоматическая сохранение черновика Discourse в 12:19:44 BST, хотя я не могу установить, содержал ли он пропавший текст.
Я понимаю, что ручное отключение Wi-Fi могло прервать незавершенные запросы. Однако исходная операция сохранения уже зависла до того, как я сменил сетевое соединение.
Это вызывает два вопроса, связанных с моим первоначальным сообщением:
-
Миграция соединения QUIC: Есть ли рекомендуемый способ определить, предпринял ли браузер iOS попытку миграции существующего соединения HTTP/3, вместо создания нового соединения или отказа от незавершенных запросов?
-
Восстановление редактора Discourse: Если запрос на правку поста зависает или прерывается, ожидается ли, что редактор останется недоступным за состоянием «Сохранение»? Существует ли механизм тайм-аута, повторных попыток или восстановления, который должен сохранить несохраненный текст?
Меня особенно интересует второй вопрос, потому что я не смог вернуться к редактору, чтобы скопировать свою работу, прежде чем пытаться восстановить подключение.
Я не менял настройки Caddy, nginx или HTTP/3 в результате этого инцидента, поскольку имеющиеся данные пока не позволяют определить, что вызвало остановку исходной операции сохранения.