| Termin | Definicja |
|---|---|
| WebSocket | WebSocket to protokół umożliwiający dwukierunkową komunikację w czasie rzeczywistym między klientem a serwerem. WebSocket jako kanał komunikacji dwukierunkowejWebSocket to protokół opisany w standardzie RFC 6455, przeznaczony do utrzymywania dwukierunkowej komunikacji między aplikacją kliencką a serwerem. W typowym modelu HTTP klient wysyła żądanie, a serwer zwraca odpowiedź. WebSocket zmienia ten sposób pracy: po ustanowieniu połączenia zarówno klient, jak i serwer mogą przesyłać dane bez konieczności rozpoczynania kolejnych niezależnych żądań HTTP. Dzięki temu serwer może przekazać informację natychmiast po wystąpieniu zdarzenia, bez ciągłego odpytywania go przez przeglądarkę. Połączenie WebSocket zaczyna się od uzgodnienia wykonywanego za pomocą żądania HTTP. Klient wysyła nagłówki Ustanawianie połączenia i znaczenie ramekW przeglądarce połączenie można utworzyć za pomocą interfejsu JavaScript WebSocket dzieli transmisję na ramki. Ramki tekstowe przenoszą dane UTF-8, a ramki binarne mogą zawierać dowolny uzgodniony przez aplikację ciąg bajtów. Protokół definiuje również ramki sterujące: WebSocket w aplikacjach czasu rzeczywistegoStałe połączenie jest przydatne tam, gdzie zmiany powinny pojawiać się bez zauważalnego opóźnienia wynikającego z cyklicznego odpytywania serwera. Przykładem może być aktualizowanie statusu zadania, tablica współdzielona przez kilku użytkowników, powiadomienia w panelu aplikacji, podgląd postępu operacji albo komunikacja w narzędziu działającym w przeglądarce. Serwer może wysłać zdarzenie do konkretnego klienta lub do większej grupy klientów, jeżeli logika aplikacji przewiduje takie rozsyłanie. WebSocket nie gwarantuje sam z siebie poprawności danych biznesowych ani ponownego dostarczenia wiadomości po zerwaniu połączenia. Jeżeli połączenie zostanie przerwane, aplikacja musi obsłużyć ponowne łączenie, ustalić, od którego zdarzenia wznowić odbiór, oraz zdecydować, czy wiadomość ma zostać ponowiona. Istotny jest również stan po stronie klienta: komunikat odebrany przed awarią przeglądarki może nie zostać zapisany w sposób pozwalający na jego odtworzenie. W praktyce stosuje się więc identyfikatory zdarzeń, numerowanie komunikatów, kontrolę kolejności oraz limity czasu bezczynności. Połączenie może też zostać zamknięte przez serwer pośredniczący, zaporę sieciową lub urządzenie sieciowe, dlatego aplikacja powinna rozróżniać zwykłe zamknięcie od błędu transportu. Diagnostyka problemów z połączeniem WebSocketPrzy problemach z WebSocket warto najpierw sprawdzić, czy handshake zakończył się odpowiedzią Jeżeli handshake przebiega poprawnie, ale wiadomości nie docierają, przyczyną może być błąd obsługi zdarzeń, niezgodny format danych, zamykanie sesji przez serwer albo brak mechanizmu podtrzymywania połączenia. Warto zapisać kod i przyczynę zamknięcia, sprawdzić odpowiedzi na ramki |