WebSocket Ping наспроти TCP Keepalive низ прокси
Изберете проверка на живост за WebSocket партнерот наместо да сметате дека жива TCP врска е доказ дека патеката на апликацијата одговара.
Жива TCP врска, партнер што одговара на WebSocket и корисен напредок на апликацијата се различни набљудувања:
| Доказ | Што утврдува |
|---|---|
| Живост на TCP ниво | Проверената транспортна патека одговара на тоа ниво |
| Соодветен WebSocket Pong | Партнерот одговори на тој контролен кадар |
| Потврда од апликацијата | Апликацијата потврди операција според сопствениот протокол |
Напредното прокси обично одржува одделни врски кон клиентот и кон дестинацијата. TCP партнер на клиентот е проксито, додека Ping во воспоставен тунел патува до WebSocket крајната точка.
Соодветен Pong
Протоколот бара Pong што одговара да ги носи апликациските податоци на Ping. Користете ја таа врска за да утврдите нерешена проверка. Небаран Pong е дозволен, но не бара потврда; испраќањето по секоја порака со податоци обезбедува различен доказ.
Претпочитајте го механизмот за отчукување на срце што го поддржува библиотеката. JavaScript во прелистувачот наместо тоа барадоговор за отчукување на срце на апликацијата. Изберете интервали и прагови за неуспех според оптоварувањето и мрежната политика. Паузи во распоредувањето или преоптоварен настански циклус можат да пропуштат агресивен праг без да утврдат дека мрежата откажала.
Одржувајте го приемникот во работа
Клиентот бара постојан I/O за да прима и обработува контролни кадри. Блокирањето на тој механизам може да го направи локалното гладување да изгледа како прекин.
Ping создава тунелски сообраќај, но секој посредник одлучува што ја задоволува неговата политика за мирување. Ниту едно отчукување на срце не гарантира заштита од апсолутно ограничување на животниот век на врската.
Партнерот може да одговори на Ping додека неговата апликација престанува да произведува ажурирања, а тивка претплата може да биде здрава. Следете го последниот валиден Pong и значајниот настан во апликацијата одделно кога двете се важни. При неуспех, задржете ја рутата, изминатото време и нерешената проверка, потоа затворете или обновете преку поддржаниот животен циклус.