Supported by
Standaard gebruikt sgcWebSocket WebSocket als protocol, maar u kunt ook het gewone TCP-protocol gebruiken in client- en servercomponenten.
Client Component
WebSocket-protocol uitschakelen.
Client.Specifications.RFC6455 := False;
Servercomponent
Verwerk de gebeurtenis OnUnknownProtocol en stel Transport in als trpTCP en accepteer de verbinding.
procedure OnUnknownProtocol(Connection: TsgcWSConnection; var Accept: Boolean);
begin
Connection.Transport := trpTCP;
Accept := True;
end;
Wanneer een client verbinding maakt met de server, wordt deze verbinding gedefinieerd als TCP en gebruikt het plain TCP-protocol in plaats van WebSockets. Plain TCP-verbindingen maken geen onderscheid tussen tekst- en binaire berichten, dus alle ontvangen berichten worden verwerkt door de OnBinary-gebeurtenis.
Einde van bericht
Als berichten groot zijn, kunnen ze soms gefragmenteerd worden ontvangen. Er is een methode om het einde van een bericht te detecteren door op te geven naar welke bytes moet worden gezocht. Voorbeeld: in het STOMP-protocol eindigen alle berichten met de bytes 0 en 10.
procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
Connection.AddTCPEndOfFrame(0);
Connection.AddTCPEndOfFrame(10);
end;