Connessioni TCP

Supportato da

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

Per impostazione predefinita, sgcWebSocket utilizza WebSocket come protocollo, ma è possibile utilizzare il protocollo TCP semplice nei componenti client e server.

 

Client Componente

Disabilita il protocollo WebSocket.


Client.Specifications.RFC6455 := False;
 

 

Componente Server

Gestire l'evento OnUnknownProtocol e impostare Transport come trpTCP e accettare la connessione.


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

 

Quando un client si connette al server, questa connessione verrà definita come TCP e utilizzerà il protocollo TCP semplice anziché WebSockets. Le connessioni TCP semplici non distinguono tra messaggi di testo e binari, quindi tutti i messaggi ricevuti vengono gestiti dall'evento OnBinary.

 

Fine del messaggio

Se i messaggi sono di grandi dimensioni, possono a volte essere ricevuti in modo frammentato. Esiste un metodo per rilevare la fine di un messaggio specificando quali byte cercare. Esempio: nel protocollo STOMP, tutti i messaggi terminano con i byte 0 e 10.


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