TCP Connections

Unterstützt von

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

Standardmäßig verwendet sgcWebSocket WebSocket als Protokoll, aber Sie können in Client- und Server-Komponenten auch das reine TCP-Protokoll verwenden.

 

Client-Komponente

WebSocket-Protokoll deaktivieren.


Client.Specifications.RFC6455 := False;
 

 

Serverkomponente

Behandeln Sie das Ereignis OnUnknownProtocol und setzen Sie Transport auf trpTCP und akzeptieren Sie die Verbindung.


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

 

Wenn sich dann ein Client mit dem Server verbindet, wird diese Verbindung als TCP definiert und verwendet das Plain-TCP-Protokoll anstelle von WebSockets. Plain-TCP-Verbindungen unterscheiden nicht zwischen Text- und Binärnachrichten, sodass alle empfangenen Nachrichten vom OnBinary-Ereignis behandelt werden.

 

Ende der Nachricht

Wenn Nachrichten groß sind, können sie manchmal fragmentiert empfangen werden. Es gibt eine Methode, das Ende einer Nachricht zu erkennen, indem man angibt, nach welchen Bytes gesucht werden soll. Beispiel: Im STOMP-Protokoll enden alle Nachrichten mit den Bytes 0 und 10.


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