Rozwinąłem serwer czatu używając websocket w kowboju, ale chcę wiedzieć, czy wiadomość wysłana przez serwer do sukcesu klienta. Jak mogę się dowiedzieć?Skąd mogę wiedzieć, czy wiadomość wysłana przez websocket nie powiodła się, czy nie
Odpowiedz
Websocket to dość cienka warstwa abstrakcji na szczycie konwencjonalnego gniazda TCP. Po wstępnym uzgadnianiu różnica jest minimalna. Pytanie brzmi: skąd mam wiedzieć, czy fragment danych został odebrany przez zdalnego peera? Krótka odpowiedź: tylko wtedy, gdy peer potwierdza to wyraźnie za pomocą protokołu na poziomie aplikacji. Klient zdalny wyśle pakiety TCP ACK dla każdego wysłanego pakietu danych, ale fakt ten jest dobrze ukryty w aplikacji z ważnych powodów. Odbieranie pakietu ACK oznacza, że zdalny stos TCP zajął się nim, ale nie mówi nic o tym, jak (i czy) aplikacja klienta go przetworzyła.
Dodaj specjalny komunikat "potwierdzenie odbioru" do swojego protokołu czatu. Dodaj monotonicznie rosnący numer sekwencji we wszystkich wiadomościach wychodzących i umieść SN w odebranej wiadomości w komunikacie ACK, aby dokładnie wiedzieć, ile danych klient już przetworzył.
Powinieneś wrócić i wybrać odpowiedź na swoje pytanie – thedouglenz