Czym są WebSockety?

WebSocket to technologia webowa zapewniająca dwukierunkowe, pełnodupleksowe kanały komunikacji przez pojedyncze gniazdo TCP, ustandaryzowana przez IETF jako RFC 6455.

Komunikacja w czasie rzeczywistym

WebSocket umożliwia trwałą, dwukierunkową komunikację między przeglądarkami a serwerami bez ciągłego odpytywania.

Poza modelem żądanie-odpowiedź HTTP

Tradycyjny HTTP działa w modelu żądanie-odpowiedź, w którym klient musi zainicjować każdą wymianę. WebSocket zmienia połączenie HTTP w trwały, pełnodupleksowy kanał, w którym zarówno klient, jak i serwer mogą wysyłać dane w dowolnym momencie. Eliminuje to narzut powtarzanych uzgodnień HTTP i umożliwia prawdziwe interakcje w czasie rzeczywistym, takie jak kanały na żywo, gry online, współpraca nad dokumentami i notowania finansowe.

  • Dwukierunkowość: zarówno klient, jak i serwer mogą wysyłać dane
  • Trwałe połączenie zmniejsza opóźnienia i narzut
  • Działa przez standardowy port TCP 80/443, przechodząc przez zapory sieciowe
  • Standardized as RFC 6455 by the IETF
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

Handshake WebSocket

Połączenie WebSocket zaczyna się od żądania uaktualnienia HTTP, a następnie przechodzi do trwałego protokołu ramek binarnych.

1. Żądanie uaktualnienia HTTP

Klient wysyła żądanie HTTP GET z nagłówkami Upgrade: websocket i Connection: Upgrade oraz losowym Sec-WebSocket-Key.

2. Serwer akceptuje

Serwer odpowiada kodem HTTP 101 Switching Protocols, potwierdzając uaktualnienie. Połączenie TCP jest teraz kanałem WebSocket.

3. Komunikacja pełnodupleksowa

Obie strony swobodnie wysyłają ramki tekstowe lub binarne z minimalnym narzutem 2 bajtów. Połączenie pozostaje otwarte, dopóki któraś ze stron go nie zamknie.

Przykład WebSocket w Delphi

Połącz się z serwerem WebSocket i wymieniaj wiadomości za pomocą kilku linii kodu.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'www.esegece.com';
  WSClient.Port := 2053;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Handle incoming messages
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a text message to the server
  WSClient.WriteData('Hello, WebSocket!');
end;
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy na budowę aplikacji czasu rzeczywistego?

Pobierz sgcWebSockets i już dziś dodaj obsługę WebSocket do swoich projektów Delphi, C++ Builder lub .NET.