Unterstützt von
Standardmäßig verwendet sgcWebSocket WebSocket als Protokoll, aber Sie können in Client- und Server-Komponenten auch das reine TCP-Protokoll verwenden.
Client-Komponente
WebSocket-Protokoll deaktivieren.
Client.Specifications.RFC6455 := False;
Serverkomponente
Behandeln Sie das Ereignis OnUnknownProtocol und setzen Sie Transport auf trpTCP und akzeptieren Sie die Verbindung.
procedure OnUnknownProtocol(Connection: TsgcWSConnection; var Accept: Boolean);
begin
Connection.Transport := trpTCP;
Accept := True;
end;
Wenn sich dann ein Client mit dem Server verbindet, wird diese Verbindung als TCP definiert und verwendet das Plain-TCP-Protokoll anstelle von WebSockets. Plain-TCP-Verbindungen unterscheiden nicht zwischen Text- und Binärnachrichten, sodass alle empfangenen Nachrichten vom OnBinary-Ereignis behandelt werden.
Ende der Nachricht
Wenn Nachrichten groß sind, können sie manchmal fragmentiert empfangen werden. Es gibt eine Methode, das Ende einer Nachricht zu erkennen, indem man angibt, nach welchen Bytes gesucht werden soll. Beispiel: Im STOMP-Protokoll enden alle Nachrichten mit den Bytes 0 und 10.
procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
Connection.AddTCPEndOfFrame(0);
Connection.AddTCPEndOfFrame(10);
end;