Suportado por
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;