WebSockets to protokół komunikacyjny zaprojektowany w celu zapewnienia pełnodupleksowych kanałów komunikacyjnych w czasie rzeczywistym za pośrednictwem pojedynczego połączenia TCP. W przeciwieństwie do tradycyjnego protokołu HTTP, który działa zgodnie z modelem żądanie-odpowiedź, WebSockets umożliwiają ciągłą i dwukierunkową komunikację między klientem a serwerem. Po nawiązaniu połączenia WebSocket w procesie uzgadniania dane mogą być wymieniane w obu kierunkach jednocześnie, bez konieczności wielokrotnego otwierania i zamykania połączeń.
Jak działa protokół WebSocket?
Połączenie WebSocket rozpoczyna się od uzgadniania inicjowanego przez klienta, podczas którego do serwera wysyłane jest żądanie HTTP w celu uaktualnienia połączenia z HTTP do WebSocket. Jeśli serwer obsługuje protokół WebSockets, w odpowiedzi przesyła kod stanu 101, wskazujący, że przełączenie protokołu zostało zaakceptowane. Po tym uzgadnianiu zostaje nawiązane połączenie WebSocket i zarówno klient, jak i serwer mogą swobodnie i asynchronicznie wysyłać do siebie wiadomości. Zmniejsza to opóźnienia i poprawia wydajność w porównaniu z tradycyjnymi metodami odpytywania.
Połączenie WebSocket to połączenie trwałe, które umożliwia wysyłanie i odbieranie danych w czasie rzeczywistym za pośrednictwem jednego, długotrwałego połączenia TCP. To połączenie rozpoczyna się od uzgadniania HTTP i po nawiązaniu umożliwia komunikację między klientem a serwerem z niskim opóźnieniem. Połączenie pozostaje otwarte do momentu wyraźnego zamknięcia przez którąkolwiek ze stron, co ułatwia wydajną, ciągłą wymianę danych.
WebSocket działa poprzez protokół TCP, wykorzystując port 80 do połączeń niezabezpieczonych i port 443 do połączeń bezpiecznych (wss://). W przeciwieństwie do protokołu HTTP, który ustanawia nowe połączenie dla każdego żądania, protokół WebSocket utrzymuje jedno połączenie, którego można używać do obsługi wielu komunikatów, minimalizując obciążenie i poprawiając wydajność aplikacji działających w czasie rzeczywistym.
Interfejs API WebSocket zapewnia ustandaryzowany sposób interakcji z połączeniami protokołu WebSocket w przeglądarkach internetowych. Zawiera metody i właściwości służące do nawiązywania połączenia, wysyłania i odbierania komunikatów oraz obsługi zdarzeń, takich jak otwarcie połączenia, otrzymanie wiadomości i zamknięcie połączenia. Interfejs API umożliwia programistom tworzenie aplikacji internetowych w czasie rzeczywistym z wydajnymi możliwościami komunikacji dwukierunkowej.