Conexões TCP

Suportado por

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

Por padrão, o sgcWebSocket utiliza o WebSocket como protocolo, mas você pode utilizar o protocolo TCP simples nos componentes de cliente e servidor.

 

Cliente Componente

Desabilita o protocolo WebSocket.


Client.Specifications.RFC6455 := False;
 

 

Server Component

Trate o evento OnUnknownProtocol e defina Transport como trpTCP e aceite (Accept) a conexão.


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

 

Então, quando um cliente se conecta ao servidor, esta conexão será definida como TCP e usará o protocolo TCP puro em vez de WebSockets. As conexões TCP puro não distinguem entre mensagens de texto e binárias, portanto todas as mensagens recebidas são tratadas pelo evento OnBinary.

 

Fim da mensagem

Se as mensagens forem grandes, elas podem às vezes ser recebidas fragmentadas. Existe um método para detectar o fim de uma mensagem especificando quais bytes procurar. Exemplo: no protocolo STOMP, todas as mensagens terminam com os bytes 0 e 10.


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