История расследования ошибки, которая выглядела как проблема WebSocket, но происходила ещё до HTTP-запроса.
Кратко. Веб-приложение работало на десктопе, но мобильный Brave постоянно обрывал wss://-соединение. Обычные HTTPS-запросы выполнялись, а DevTools не показывал ни HTTP-статуса, ни ответа сервера. В просмотренных логах nginx не было записей именно о неудачных WebSocket-попытках. NetLog вывел расследование на запрос клиентского TLS-сертификата: Chromium отменял WebSocket до HTTP Upgrade. Обход оказался неожиданным: я намеренно включил VPN → браузер запросил клиентский сертификат → я отключил VPN → WebSocket заработал. Это не было лечением «выключением мешавшего VPN»: исходная проблема существовала и без него. Механизм восстановления после появления запроса сертификата требует отдельного подтверждения.
Все адреса и имена в примерах вымышлены. Схема упрощена; исходные конфигурации, внутренние маршруты, сертификаты и журналы не публикуются.