Klient WebSocket dla Delphi

TsgcWebSocketClient: kompletny komponent klienta WebSocket dla Delphi i C++ Builder z SSL/TLS, obsługą proxy, kompresją wiadomości i automatycznym ponownym łączeniem.

TsgcWebSocketClient

Komponent klienta WebSocket łączy się z dowolnym serwerem WebSocket zgodnym z RFC 6455 i wymienia wiadomości tekstowe i binarne.

Klasa komponentu

TsgcWebSocketClient

Protokół

WebSocket — RFC 6455

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Standard / Professional / Enterprise

Upuść komponent, ustaw kilka właściwości i gotowe

Ustaw Host, Port i TLS, obsłuż OnMessage, a następnie aktywuj połączenie. Handshake, ramkowanie i ping/pong są obsługiwane za ciebie.

uses
  sgcWebSocket_Client, sgcWebSocket_Classes;

var
  oClient: TsgcWebSocketClient;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oClient.Host := '127.0.0.1';
  oClient.Port := 80;
  oClient.TLS := True;
  oClient.Options.Parameters := '/ws/';

  oClient.OnConnect := OnConnect;
  oClient.OnMessage := OnMessage;
  oClient.OnDisconnect := OnDisconnect;

  oClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const Text: string);
begin
  Memo1.Lines.Add(Text);
end;

// Send a text frame
oClient.WriteData('hello');
// uses: sgcWebSocket_Client, sgcWebSocket_Classes
TsgcWebSocketClient *oClient = new TsgcWebSocketClient(this);
oClient->Host = "127.0.0.1";
oClient->Port = 80;
oClient->TLS = true;
oClient->Options->Parameters = "/ws/";

oClient->OnConnect = OnConnect;
oClient->OnMessage = OnMessage;
oClient->OnDisconnect = OnDisconnect;

oClient->Active = true;

void __fastcall TForm1::OnMessage(TsgcWSConnection *Connection,
    const UnicodeString Text)
{
  Memo1->Lines->Add(Text);
}

// Send a text frame
oClient->WriteData("hello");
using esegece.sgcWebSockets;

var client = new TsgcWebSocketClient();
client.Host = "127.0.0.1";
client.Port = 80;
client.TLS = true;
client.Options.Parameters = "/ws/";

client.OnConnect    += (conn) => Console.WriteLine("#connected: " + conn.IP);
client.OnDisconnect += (conn, code) => Console.WriteLine("#disconnected: " + code);
client.OnMessage    += (conn, text) => Console.WriteLine(text);

client.Active = true;

// Send a text frame
client.WriteData("hello");

Co jest w środku

Opublikowane właściwości: 23, metody: 22, zdarzenia: 16, pobrane z dokumentacji komponentu.

Sterowanie połączeniem

Host, Port, URL, TLS, IPVersion i Active otwierają synchroniczne lub asynchroniczne połączenie. Connect/Disconnect blokują wywołującego, Start/Stop działają w wątku roboczym.

Keep-alive i ponowne łączenie

HeartBeat wysyła ramki ping WebSocket według timera, a WatchDog automatycznie łączy się ponownie po nieoczekiwanym zerwaniu. OnBeforeHeartBeat i OnBeforeWatchDog pozwalają dostosować każdy cykl.

TLS i proxy

TLSOptions wybiera IOHandler (OpenSSL lub SChannel), wersję TLS (1.0–1.3) i ALPN, Proxy kieruje handshake przez HTTP lub SOCKS, a Authentication obsługuje schematy Basic / Bearer / własne.

API wiadomości

WriteData wysyła ramkę tekstową z opcjonalną fragmentacją, WriteAndWaitData blokuje do momentu odpowiedzi drugiej strony, a Ping wysyła ramkę ping. OnMessage, OnBinary i OnFragmented dostarczają dane przychodzące.

Kompresja i throttling

Extensions.PerMessage_Deflate negocjuje kompresję RFC 7692, Throttle ogranicza liczbę bitów na sekundę w obu kierunkach, a QueueOptions serializuje zapisy Text / Binary / Ping w wątku połączenia.

Diagnostyka

LogFile zapisuje na dysku surowy ruch przychodzący i wychodzący, NotifyEvents wybiera sposób przekazywania zdarzeń do głównego wątku, a OnException, OnError i OnHandshake ujawniają szczegóły na poziomie protokołu.

Klient WebSocket WinHTTP

Alternatywny klient tylko dla Windows, który obsługuje połączenie WebSocket przez systemowy stos WinHTTP zamiast gniazd Indy — to samo API WebSocket, bez zależności od bibliotek zewnętrznych do wdrożenia.

Klasa komponentu

TsgcWSClient_WinHTTP — to samo API komunikatów, zdarzenia i sterowanie połączeniem co TsgcWebSocketClient, dzięki czemu Twój kod pozostaje znajomy.

Systemowy stos HTTP

Wykorzystuje natywne API Windows WinHTTP do uzgadniania połączenia (handshake) i ramkowania, więc nie ma dodatkowych bibliotek gniazd do dostarczenia wraz z aplikacją.

SChannel TLS

Bezpieczne połączenia są obsługiwane przez Windows SChannel, więc TLS działa od razu bez dołączania bibliotek DLL OpenSSL.

Systemowy serwer proxy i uwierzytelnianie

Respektuje konfigurację systemowego serwera proxy Windows i integruje schematy uwierzytelniania Windows (Basic, NTLM, Negotiate).

Wybierz TsgcWSClient_WinHTTP, gdy potrzebujesz czystego wdrożenia w systemie Windows, które opiera się na systemowym stosie HTTP i TLS. Dla celów wieloplatformowych (macOS, Linux, iOS, Android) użyj standardowego TsgcWebSocketClient powyżej.

Specyfikacje i źródła

Autorytatywne źródła protokołów implementowanych przez ten komponent.

Dokumentacja i dema

Bezpośredni link do dokumentacji komponentu, gotowy do uruchomienia projekt demo i pobieranie wersji próbnej.

Pomoc online — TsgcWebSocketClient Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — 01.WebSocket\01.Client Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi, C++ Builder i .NET oraz źródła pierwotne, wyłącznie dla tego komponentu.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, by zacząć?

Pobierz bezpłatną wersję próbną i dodaj WebSocket client support do swojej aplikacji Delphi.