• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Automatyczny reconnect po utracie połączenia z WS w aplikacji C#

Object Storage Arubacloud
+1 głos
69 wizyt
pytanie zadane 11 kwietnia w C# przez Sefinek Obywatel (1,500 p.)
Witam, mam juz gotowe połaczenie z WS (apka .NET 8), lecz gdy serwer WS jest np. ponownie uruchamiany, klient traci połączenie z WS. Kompletnie nie wiem jak to zrobić, aby klient probował ponownie łączyć się z serwerem po zerwaniu połączenia. Probowalem to zrobić metodami ping/pong. Próba była również przy użyciu ifa z WebSocketMessageType.Close, natomiast if nigdy nie był wykonywany z jakiegoś powodu (result.MessageType == WebSocketMessageType.Close).

Ktos mógłby mi coś doradzić? Całego kodu źródłego od razu mowie ze nie wysle, poniweaz aplikacja zawiera kilka ważnych funkcji związanych z kryptografia, dalej chyba nie musze tłumaczyć, prawda?

1 odpowiedź

0 głosów
odpowiedź 12 kwietnia przez Wiciorny Ekspert (272,210 p.)

A nie ma mechanizmu jakiegoś RETRY BACKOFF ? 
Często to wykorzystywane jest, aby automatycznie nawiązywać nowe połączenia, to samo tyczy sie np requestów. 
https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/implement-retries-exponential-backoff

Co prawda backoff częściej jest przy niepozwodzonym zapytaniu, natomiast jest też odpowiedni pattern na połączenia CircuitBreaker https://martinfowler.com/bliki/CircuitBreaker.html
https://learn.microsoft.com/en-us/aspnet/core/grpc/retries?view=aspnetcore-8.0

Pewnego rodzaju listener mógłby nasłuchiwać aktualne połączenie, bo rozumiem, że ono jest gubione w czasie. 

Na koniec co często może być rozwiązanie, mogłaby to być konfiguracja LOAD Balancera - tylko, że dalej problemem jest 1 aplikacja, a nie np. możliwość  działania load balancera na 2 instancje albo więcej, to też mogą być o brazy dokerowe. W tym momencie kiedy połączenie zostanie utracone, lub go nie można nawiązać balancer będzie uruchamiał zawsze nową instancje, tak aby użtykownik nie "doświadczył" blędu z utratą połączenia. 

Podobne pytania

0 głosów
0 odpowiedzi 124 wizyt
pytanie zadane 27 stycznia 2022 w C# przez miras_g Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,185 wizyt
0 głosów
1 odpowiedź 247 wizyt
pytanie zadane 12 listopada 2022 w C# przez Beginner555 Obywatel (1,760 p.)

92,679 zapytań

141,582 odpowiedzi

320,065 komentarzy

62,041 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...