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

Čak i ista proksijska krajnja tačka može stvoriti novu odlaznu vezu. Promenjena izlazna IP adresa takođe može pokrenuti sopstvenu politiku sesije odredišta. Tretirajte novi socket kao novu vezu i pratite dokumentovanu razmenu oporavka aplikacije. Odlučite da li radni tok treba da zadrži svoju proksijsku rutu pri ponovnom povezivanju.

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

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

Odlučite da li ćete nastaviti od kursora, preuzeti novu snimku stanja ili prihvatiti prazninu. Ako izvor događaja ne nudi interfejs za reprodukciju, brže ponovno povezivanje ne može dokazati da nijedna poruka nije propuštena.

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

Poruka stavljena u lokalni red pre prekida možda nikada nije napustila klijent. Druga je možda stigla do servera dok je njena potvrda izgubljena. Slepim ponovnim slanjem svake nepotvrđene naredbe ta dva slučaja se tretiraju kao identična.

Koristite identifikatore zahteva usluge, podršku za idempotentnost ili mehanizam usklađivanja gde su dostupni. Ponovno povezivanje transporta 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 ponovo može povećati opterećenje tokom prekida.

Zabeležite koju je proksijsku rutu izabrao svaki pokušaj, ali držite oporavak rute odvojenim od oporavka aplikacije. „Ponovo povezano“ je koristan dokaz. „Sustigao i spreman da pošalje još posla“ zahteva dodatnu razmenu aplikacije koja to utvrđuje.

Povezani članci