2013-08-17 8 views

Odpowiedz

8

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ł.

Powiązane problemy