Po ponownym połączeniu WebSocket przez proxy przywróć także sesję
Świadomie przywróć subskrypcje aplikacji i niepewny stan wiadomości po ustanowieniu nowego połączenia WebSocket przez proxy.
Wywołanie zwrotne ponownego połączenia działa i nowy socket się otwiera. To odzyskanie transportu. Nie oznacza to jednak, że Twoje subskrypcje, potwierdzenia wiadomości lub sesja aplikacji były kontynuowane od miejsca, w którym zatrzymało się poprzednie połączenie.
Nawet ten sam punkt końcowy proxy może wytworzyć nowe połączenie wychodzące. Zmieniony adres IP wyjścia może także uruchomić własną politykę sesji miejsca docelowego. Traktuj nowy socket jako nowe połączenie i podążaj za udokumentowaną wymianą odzyskiwania aplikacji. Zdecyduj, czy przepływ pracy powinien zachować swoją trasę proxy przy ponownym łączeniu.
Zachowaj nieco więcej niż ostatni URL
Przydatny stan odzyskiwania może obejmować autoryzowaną tożsamość sesji, pożądane subskrypcje, identyfikator ostatniego potwierdzonego zdarzenia oraz operacje wciąż oczekujące na potwierdzenie. Te pola należą do protokołu aplikacji; WebSocket nie definiuje uniwersalnego tokenu wznowienia.
Zdecyduj, czy wznowić od kursora, pobrać nową migawkę, czy zaakceptować lukę. Jeśli źródło zdarzeń nie oferuje interfejsu odtwarzania, szybsze ponowne połączenie nie może udowodnić, że żadna wiadomość nie została utracona.
Wysłanie dwa razy może oznaczać wykonanie dwa razy
Wiadomość umieszczona lokalnie w kolejce przed rozłączeniem mogła nigdy nie opuścić klienta. Inna mogła dotrzeć do serwera, gdy jej potwierdzenie zginęło. Bezmyślne ponowne wysyłanie każdego niepotwierdzonego polecenia traktuje te dwa przypadki jako identyczne.
Używaj identyfikatorów żądań usługi, obsługi idempotentności lub mechanizmu uzgadniania, tam gdzie są dostępne. Ponowne połączenie transportu nie może uczynić działania aplikacji odwracalnym ani automatycznie usunąć jego duplikatów.
Utrzymuj próby ponownego połączenia w ograniczonych ramach i w tempie zgodnym z polityką aplikacji. RFC 6455 zaleca wycofanie po nieprawidłowym zamknięciu; flota klientów ponawiających natychmiast może zwiększyć obciążenie podczas awarii.
Zapisuj, którą trasę proxy wybrała każda próba, ale trzymaj odzyskiwanie trasy oddzielnie od odzyskiwania aplikacji. „Ponownie połączono” to przydatny dowód. „Nadrobione i gotowi do przesłania kolejnej pracy” wymaga dodatkowej wymiany aplikacji, która to ustala.