Чат баракчасы ачылат, бирок жандуу байланыш ишке кирбейт: кайдан издөө керек
Барак менен чат ташуусу өзүнчө суроолор. WebSocket, окуя агымы же узак суроолорду текшерип, жөндөө, жеткирүү жана өмүр бою бөлүңүз.
Тармак панелин чат баракчасын жүктөөдөн мурун ачыңыз, анан барактын скелетин тарткан суроону эмес, билдирүүлөрдү таштаган суроону табыңыз. Документ, скрипттер, кирүү учурундагы алмашуу жана чат ташуусу ар башка хостторго кетиши мүмкүн. VPN чатты бузду деген кабарлардын көбү чындыгында ушул төрт суроонун биринин ишке ашпаганын сүрөттөйт. Аларды ирети менен байкаңыз, жооп адатта биринчи эки мүнөттө көрүнөт.
Билдирүүлөрдү таштаган суроону табыңыз
Барак орнойгондон кийин түрү боюнча чыпкалаңыз: WebSocket өзүнчө жазуу катары көрүнөт, окуя агымы өсүп жаткан жооп менен ачык турат, ал эми узак суроо белгилүү интервал менен кайталанат. Жаңыртууларды таштаган жазуу үчүн схеманы, хостту, портту жана статусту жазыңыз. Байланыш кирүүдөн мурун же кийин башталганын белгилеңиз, анткени аутентификацияга чейин ачылган ташуу адатта андан кийин ачылгандан башка конструкция. Жаңыртуу суроосунун же кабыл алынган контент түрүнүн суроо аталыштарын окуңуз, анткени алар жайгаштырылган барак чындап тандаган ташууну көрсөтөт.
Эски форум жазуулары продукциялар көп жыл мурун колдонууну токтоткон ташууларды сүрөттөйт, ошондуктан макалага эмес, браузер жазганга ишениңиз. Эгер жазуу такыр жок болсо, клиент коду байланышты такыр аракет кылбаган болушу мүмкүн, бул эртерек скрипт же конфигурация катасын көрсөтөт. Барактын жүктөлүшү документтин жеткенин гана далилдейт, ал эми ошол айырма тармакты чындап оңдоп жатканыңызды аныктайт.
Жөндөө, жеткирүү жана өмүр бою ар башкача бузулат
WebSocket 101 статусу менен жооп берген HTTP жаңыртуусу менен ачылат, ал эми андан кийинкинин баары барак ташуу эмес, кадрланган билдирүүлөр; бул эки этапты 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 жүрөк кагышы ички колдонмо сессиясынын дагы эле тирүү экенин далилдебейт.
Жандуу хост өзүнчө бара турган жер
Чат бэкенддери көбүнчө өз хост атында турат, кээде башка портто же өзүнчө сертификаттын артында. Бул жерге өз чечими, багыты жана прокси иштетүүсү керек, ал эми бөлүнгөн туннель баракты кошуп, сокетти чыгарып салышы мүмкүн. Жандуу хост атын клиент машинасынан чечип, ошол тармакта күткөн дарек менен жооп берерин ырастаңыз. Сертификат тизмесин так ошол хост аты үчүн текшериңиз, анткени сайтты камтыган wildcard сокеттин акыркы чекитин дайым камтый бербейт.
Жолдо прокси болсо, анын буферлөөнүн ордуна жаңыртууга же узак жашаган жоопко жол берерин ырастаңыз. HTMLди кайра жазуучу корпоративдик проксилер WebSocket жаңыртууларын көп учурда начар иштетет, натыйжада барак тартылат, ал эми чат такыр туташпайт. Ошондуктан бир продуктка эки суроо - бир хостко эки суроо эмес.
Багыттоо тизмесин оңдоңуз, коопсуздук текшерүүлөрүн эмес
Багытоо тизмесин оңдоо - маршруттун өзгөрүшү жана маршрут ээсине таандык. Сертификат текшерүүнү начарлатуу же Origin аталышын алып салуу - коопсуздук өзгөрүшү жана саясат ээсине таандык, ал билетти оңдоп жаткан адам сейрек болот. Байланышты көрүнгөн кылуунун эң тез жолу адатта окуяны мүмкүн кылуунун эң тез жолу.
Бир нерсени өзгөртүүдөн мурун бэкенд кайсы origin'дерди кабыл аларын колдонмо ээсинен сурап, бул жоопту проксини башкарган адамга жеткириңиз. Сертификат катасы туннелден гана көрүнсө, айланып өтүүнү орнотуунун ордуна тосуп турган түзмөктү текшериңиз.
Өткөрүп берүүгө жетиштүү жазуу калтырыңыз
Пайдалуу артефакт кыска: барактын URLи, жандуу акыркы чекит, кол алышуунун жыйынтыгы, биринчи ката убактысы жана кайра туташуу аракети болгон-болбогону. VPN профилинин атын жана кайсы тармакта болгонуңузду кошуңуз, ошондо ар кандай окурман алты суроо бербестен тестти кайталай алат. Cookie файлдарын, авторизация аталыштарын жана билдирүү денелерин жашырыңыз, ал эми толук архив экспортунан убакыт тилкесинин скриншотун тандаңыз. Кадрлар жана тармактык архивдер жеке билдирүүлөрдү жана сессия токендерин камтышы мүмкүн, ошондуктан бир нерсени тиркөөдөн мурун текшериңиз.
Эгер ката үнсүз жабылуу болсо, жабуу кодун жана анын алдындагы бош туруу аралыгын кошуңуз, анткени бул жуп адатта таймаут ээсин аныктайт. Жазууну колдонмо же шлюз ээсине өткөрүп бериңиз, таймаут маанисин өзүңүз болжолдобоңуз. Алардын колдоого алынган keepalive жүрүм-туруму тууралуу жообу билетти жапкан жооп.