Conexiones TCP

Compatible con

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

De forma predeterminada, sgcWebSocket usa WebSocket como protocolo, pero puede usar el protocolo TCP simple en los componentes de cliente y servidor.

 

Client Component

Deshabilitar el protocolo WebSocket.


Client.Specifications.RFC6455 := False;
 

 

Componente servidor

Gestione el evento OnUnknownProtocol y establezca Transport como trpTCP y acepte la conexión.


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

 

Luego, cuando un cliente se conecta al servidor, esta conexión se definirá como TCP y usará el protocolo TCP simple en lugar de WebSockets. Las conexiones TCP simples no distinguen entre mensajes de texto y binarios, por lo que todos los mensajes recibidos son gestionados por el evento OnBinary.

 

Fin del mensaje

Si los mensajes son grandes, a veces pueden recibirse de forma fragmentada. Existe un método para detectar el final de un mensaje especificando qué bytes buscar. Ejemplo: en el protocolo STOMP, todos los mensajes terminan con los bytes 0 y 10.


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