Страницата на чата се зарежда, но живата връзка се проваля: къде да търсим
Страницата и транспортът на чата са различни заявки. Проверете WebSocket, потока от събития или дългата анкета, след което отделете настройката, доставката и живота.
Отворете панела за мрежа преди да заредите страницата на чата, след което намерете заявката, която пренася съобщенията, а не тази, която рисува обвивката. Документът, скриптовете, разменянето при вход и транспортът на чата могат да отиват към различни хостове. Повечето доклади, че VPN е счупил чата, всъщност описват провал на една от тези четири заявки. Наблюдавайте ги по ред и отговорът обикновено се вижда в първите две минути.
Намерете заявката, която пренася съобщения
Филтрирайте по тип, щом страницата се установи: WebSocket се появява като отделен запис, потокът от събития остава отворен с растящ отговор, а дългата анкета се повтаря на редовен интервал. Запишете схемата, хоста, порта и статуса на тази, която пренася обновяванията. Отбележете дали е започнала преди или след входа, защото транспорт, отворен преди удостоверяване, обикновено е различен дизайн от отворен след него. Прочетете заглавките на заявката за надграждането или за приетия тип съдържание, защото те показват транспорта, който разгърнатата страница действително е избрала.
Стари публикации във форуми описват транспорти, които продуктите спряха да използват преди години, така че вярвайте на това, което браузърът е записал, а не на статията. Ако записът липсва напълно, клиентският код може никога да не е опитвал връзка, което сочи към по-ранен провал на скрипт или конфигурация. Страница, която се зарежда, доказва само че документът е пристигнал, и това разграничение решава дали изобщо отстранявате проблеми в мрежата.
Настройката, доставката и животът се провалят по различен начин
WebSocket се отваря с HTTP надграждане, на което се отговаря със статус 101, и всичко след това са кадрирани съобщения, а не изтегляне на страници, два етапа, които RFC 6455 пази изрично отделни. Потокът от събития отговаря със поточно съдържание и държи тялото на отговора отворено. И двете могат да не се отворят, да се отворят и да не доставят нищо, или да се отворят, да доставят и след това тихо да умрат.
wscat -c wss://chat.example.com/socket -H "Origin: https://chat.example.com"
curl -N -H "Accept: text/event-stream" https://chat.example.com/events
Уловете първия значим провал, преди да пипате профил, защото трите момента сочат към различни слоеве. Ако ръкостискането никога не завърши, сравнете го с обикновена HTTPS заявка към същия хост, за да видите дали нещо изобщо го достига. Ако завърши и не пристигат съобщения, наблюдавайте кадрите или тялото на потока, докато някой изпраща тестово съобщение от друг акаунт. Ако работи и след това спре, запишете точния час и кода на затваряне, защото тази двойка показва кой край се е отказал.
Код 1006 означава, че сокетът се е затворил без кадър за затваряне, което е как изглежда междинно устройство или изтичане на бездействие отвътре в браузъра. Пулсът на VPN не доказва, че вътрешната сесия на приложението е още жива.
Живият хост е отделна дестинация
Бекендовете на чата често живеят на собствено име на хост, понякога на различен порт или зад отделен сертификат. Тази дестинация се нуждае от собствено разрешаване, маршрут и обработка от прокси, а разделното тунелиране може да включва страницата и да изключва сокета. Разрешете името на живия хост от клиентската машина и потвърдете, че отговаря с адреса, който очаквате в тази мрежа. Проверете веригата от сертификати конкретно за това име на хост, защото шаблон, който покрива сайта, не винаги покрива крайната точка на сокета.
Ако по пътя има прокси, потвърдете, че позволява надграждането или дълготрайния отговор, вместо да го буферира. Корпоративните проксита, които пренаписват HTML, често се справят лошо с надгражданията на WebSocket, което води до страница, която се визуализира, докато чатът никога не се свързва. Затова две заявки към един продукт не са две заявки към един хост.
Поправете списъка с дестинации, а не проверките за сигурност
Поправянето на списък с дестинации е промяна в маршрутизацията и принадлежи на този, който притежава маршрута. Разхлабването на проверката на сертификата или премахването на заглавката Origin е промяна в сигурността и принадлежи на този, който притежава политиката, а това рядко е човекът, който отстранява проблема по тикета. Най-бързият начин връзката да се появи обикновено е най-бързият начин инцидентът да стане възможен.
Попитайте собственика на приложението кои източници приема бекендът, преди да промените каквото и да е, и предайте този отговор на този, който контролира проксито. Ако грешка в сертификата се появява само през тунела, инспектирайте прихващащото устройство, вместо да инсталирате обход.
Запишете достатъчно, за да го предадете
Полезният артефакт е кратък: URL на страницата, жив адрес, резултат от ръкостискането, време на първия провал и дали е опитано повторно свързване. Добавете името на VPN профила и мрежата, в която сте били, и всеки читател ще може да повтори теста, без да задава шест въпроса. Зарежете бисквитките, заглавките за упълномощаване и телата на съобщенията и предпочитайте снимка на екрана на колоната с времето пред пълен експорт на архив. Кадрите и мрежовите архиви могат да съдържат лични съобщения и токени за сесии, затова инспектирайте, преди да прикачите нещо.
Ако провалът е тихо затваряне, включете кода на затваряне и интервала на бездействие преди него, защото тази двойка обикновено показва собственика на изтичането. Предайте записа на собственика на приложението или шлюза, вместо сами да гадаете стойност за изчакване. Техният отговор за поддържаното поведение при запазване на връзката е този, който затваря тикета.