Connexions TCP

Pris en charge par

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

Par défaut, sgcWebSocket utilise WebSocket comme protocole, mais vous pouvez utiliser le protocole TCP simple dans les composants client et serveur.

 

Client Composant

Désactiver le protocole WebSocket.


Client.Specifications.RFC6455 := False;
 

 

Composant Serveur

Gérez l'événement OnUnknownProtocol et définissez Transport sur trpTCP puis acceptez la connexion.


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

 

Ensuite, lorsqu'un client se connecte au serveur, cette connexion sera définie comme TCP et utilisera le protocole TCP brut au lieu de WebSockets. Les connexions TCP brutes ne distinguent pas les messages texte et binaires, donc tous les messages reçus sont gérés par l'événement OnBinary.

 

Fin du message

Si les messages sont volumineux, ils peuvent parfois être reçus de manière fragmentée. Il existe une méthode pour détecter la fin d'un message en spécifiant les octets à rechercher. Exemple : dans le protocole STOMP, tous les messages se terminent par les octets 0 et 10.


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