Przedstawiam przykładowe rozwiązanie dotyczące problemów z połączeniem serwera.
Po krótce, co to za błąd?
Problem ten pojawia się, gdy gracz próbuje nawiązać połączenie z serwerem, ale serwer nie odpowiada. W takiej sytuacji gracz otrzymuje komunikat "Zostaniesz połączony z serwerem", który wisi cały czas. Problem ten może również występować podczas teleportacji, w wyniku czego gracz zostaje zatrzymany i nie może dalej grać.
Rozwiązanie:
Wdrożymy specjalny mechanizm, który podczas problemów sieciowych z serwerem będzie nawiązywał kolejną próbę połączenia, co 1 sekundę. Takie rozwiązanie zostało już opublikowane na innym forum przez Kena i ma spore wady. Takie podejście, będzie generowało dodatkowe obciążenie sieci. Wdrożymy więc strategie nazywaną exponential backoff, która pozwoli na bardziej efektywne zarządzanie ponownymi próbami połączenia w przypadku błędów. W tej strategii, czas oczekiwania między kolejnymi próbami jest stopniowo zwiększany, co redukuje ryzyko nadmiernego obciążenia serwera. Użyłem tu również chrono do obsługi limitu czasu połączenia zamiast time(NULL), chrono umożliwia większą precyzję.
Cześć wszystkim,
Przedstawiam przykładowe rozwiązanie dotyczące problemów z połączeniem serwera.
Po krótce, co to za błąd?
Problem ten pojawia się, gdy gracz próbuje nawiązać połączenie z serwerem, ale serwer nie odpowiada. W takiej sytuacji gracz otrzymuje komunikat "Zostaniesz połączony z serwerem", który wisi cały czas. Problem ten może również występować podczas teleportacji, w wyniku czego gracz zostaje zatrzymany i nie może dalej grać.
Rozwiązanie:
Wdrożymy specjalny mechanizm, który podczas problemów sieciowych z serwerem będzie nawiązywał kolejną próbę połączenia, co 1 sekundę. Takie rozwiązanie zostało już opublikowane na innym forum przez Kena i ma spore wady. Takie podejście, będzie generowało dodatkowe obciążenie sieci. Wdrożymy więc strategie nazywaną exponential backoff, która pozwoli na bardziej efektywne zarządzanie ponownymi próbami połączenia w przypadku błędów. W tej strategii, czas oczekiwania między kolejnymi próbami jest stopniowo zwiększany, co redukuje ryzyko nadmiernego obciążenia serwera. Użyłem tu również chrono do obsługi limitu czasu połączenia zamiast time(NULL), chrono umożliwia większą precyzję.
Implementacja:
📂 Lokalizacja pliku: 'EterLib -> NetStream.cpp'
🔍 Szukaj
♻️ Zamień
📂 Lokalizacja pliku: 'EterLib -> StdAfx.h'
🔍 Szukaj
➕ Dodaj: