Pakartotinio prisijungimo atgalinis iškvietimas įvyksta ir naujas lizdas atsidaro. Tai transporto atkūrimas. Tai nebūtinai reiškia, kad jūsų prenumeratos, pranešimų patvirtinimai ar programos sesija tęsėsi ten, kur sustojo ankstesnis ryšys.

Net tas pats tarpinio serverio galinis taškas gali sukurti naują išeinantį ryšį. Pasikeitęs išėjimo IP taip pat gali suaktyvinti paskirties vietos pačios sesijos politiką. Traktuokite naują lizdą kaip naują ryšį ir laikykitės dokumentuoto programos atkūrimo mainų. Nuspręskite, ar darbo eiga turi išlaikyti savo tarpinio serverio maršrutą jungiantis iš naujo.

Išsaugokite šiek tiek daugiau nei paskutinį URL

Naudinga atkūrimo būsena gali apimti įgaliotą sesijos tapatybę, norimas prenumeratas, paskutinio patvirtinto įvykio identifikatorių ir operacijas, kurios dar laukia patvirtinimo. Tie laukai priklauso programos protokolui; WebSocket neapibrėžia universalaus tęsimo žetono.

Nuspręskite, ar tęsti nuo žymeklio, gauti naują momentinę kopiją, ar priimti spragą. Jei įvykių šaltinis nesiūlo peržiūros sąsajos, greitesnis prisijungimas negali įrodyti, kad nebuvo prarasta jokių pranešimų.

Siuntimas du kartus gali reikšti darymą du kartus

Pranešimas, vietoje įdėtas į eilę prieš atjungimą, galėjo niekada neiškeliauti iš kliento. Kitas galėjo pasiekti serverį, kai jo patvirtinimas buvo prarastas. Aklai iš naujo siunčiant kiekvieną nepatvirtintą komandą, abu atvejai traktuojami kaip vienodi.

Naudokite paslaugos užklausų identifikatorius, idempotencijos palaikymą arba derinimo mechanizmą, kur jie prieinami. Transporto prisijungimas iš naujo negali padaryti programos veiksmo grįžtamo arba automatiškai pašalinti jo dubliavimo.

Išlaikykite prisijungimo iš naujo bandymus ribotus ir tempą pagal programos politiką. RFC 6455 rekomenduoja atsitraukti po nenormalaus uždarymo; klientų būrys, bandantis iš karto, gali padidinti sutrikimo apkrovą.

Užrašykite, kokį tarpinio serverio maršrutą pasirinko kiekvienas bandymas, bet laikykite maršruto atkūrimą atskirai nuo programos atkūrimo. „Vėl prisijungta“ yra naudingas įrodymas. „Pasivijome ir pasiruošę pateikti daugiau darbo“ reikalauja papildomų programos mainų, kurie tai nustato.

Susiję straipsniai