Povratni poziv ponovnog povezivanja izvršava se i novi socket se otvara. To je oporavak prijenosa. To ne znači nužno da su vaše pretplate, potvrde poruka ili sesija aplikacije nastavile tamo gdje je prethodna veza stala.

Čak i ista proxy završna točka može stvoriti novu odlaznu vezu. Promijenjena izlazna IP adresa također može pokrenuti vlastitu politiku sesije odredišta. Tretirajte novi socket kao novu vezu i slijedite dokumentiranu razmjenu oporavka aplikacije. Odlučite treba li radni tok zadržati svoju proxy rutu pri ponovnom povezivanju.

Zadržite malo više od posljednjeg URL-a

Korisno stanje oporavka može uključivati ovlašteni identitet sesije, željene pretplate, identifikator posljednjeg potvrđenog događaja i operacije koje još čekaju potvrdu. Ta polja pripadaju protokolu aplikacije; WebSocket ne definira univerzalni token za nastavak.

Odlučite hoćete li nastaviti od kursora, dohvatiti novu snimku stanja ili prihvatiti prazninu. Ako izvor događaja ne nudi sučelje za reprodukciju, brže ponovno povezivanje ne može dokazati da nijedna poruka nije izgubljena.

Slanje dvaput može značiti i izvršavanje dvaput

Poruka stavljena u lokalni red prije prekida možda nikada nije napustila klijent. Druga je možda stigla do poslužitelja dok je njezina potvrda izgubljena. Slijepo ponovno slanje svake nepotvrđene naredbe tretira ta dva slučaja kao identična.

Upotrijebite identifikatore zahtjeva usluge, podršku za idempotentnost ili mehanizam usklađivanja gdje su dostupni. Ponovno povezivanje prijenosa ne može učiniti radnju aplikacije reverzibilnom niti je automatski ukloniti iz duplikata.

Ograničite pokušaje ponovnog povezivanja i prilagodite tempo politici aplikacije. RFC 6455 preporučuje odustajanje nakon nenormalnog zatvaranja; mnoštvo klijenata koji odmah pokušavaju ponovno može povećati opterećenje tijekom prekida.

Zabilježite koju je proxy rutu odabrao svaki pokušaj, ali držite oporavak rute odvojenim od oporavka aplikacije. „Ponovno povezano“ koristan je dokaz. „Sustigao i spreman poslati još posla“ zahtijeva dodatnu razmjenu aplikacije koja to utvrđuje.

Povezani članci