• 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#

Aruba Cloud - Virtual Private Server VPS
+1 głos
127 wizyt
pytanie zadane 11 kwietnia 2024 w C# przez Sefinek Obywatel (1,710 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 2024 przez Wiciorny Ekspert (280,070 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 151 wizyt
pytanie zadane 27 stycznia 2022 w C# przez miras_g Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,298 wizyt
0 głosów
1 odpowiedź 411 wizyt
pytanie zadane 12 listopada 2022 w C# przez Beginner555 Bywalec (2,090 p.)

93,322 zapytań

142,321 odpowiedzi

322,388 komentarzy

62,652 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...