TCP Connections

Obsługiwane przez

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

Domyślnie sgcWebSocket używa WebSocket jako protokołu, ale w komponentach klienta i serwera można używać zwykłego protokołu TCP.

 

Klient Komponent

Wyłącz protokół WebSocket.


Client.Specifications.RFC6455 := False;
 

 

Komponent serwerowy

Obsłuż zdarzenie OnUnknownProtocol, ustaw Transport na trpTCP i zaakceptuj połączenie.


procedure OnUnknownProtocol(Connection: TsgcWSConnection;  var Accept: Boolean);
begin
  Connection.Transport := trpTCP;
  Accept := True;
end;

 

Gdy klient łączy się z serwerem, połączenie to zostanie zdefiniowane jako TCP i będzie używać protokołu TCP zamiast WebSockets. Połączenia TCP nie rozróżniają wiadomości tekstowych i binarnych, więc wszystkie odebrane wiadomości są obsługiwane przez zdarzenie OnBinary.

 

Koniec wiadomości

Jeśli wiadomości są duże, mogą być czasami odbierane w fragmentach. Istnieje metoda wykrywania końca wiadomości poprzez określenie bajtów do wyszukania. Przykład: w protokole STOMP wszystkie wiadomości kończą się bajtami 0 i 10.


procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
  Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
  Connection.AddTCPEndOfFrame(0);
  Connection.AddTCPEndOfFrame(10);
end;