サポート対象
デフォルトでは、sgcWebSocket はプロトコルとして WebSocket を使用しますが、クライアントおよびサーバーコンポーネントでプレーン TCP プロトコルを使用することもできます。
クライアント コンポーネント
WebSocket プロトコルを無効にします。
Client.Specifications.RFC6455 := False;
サーバーコンポーネント
OnUnknownProtocol イベントを処理し、Transport を trpTCP に設定して接続を受け入れます。
procedure OnUnknownProtocol(Connection: TsgcWSConnection; var Accept: Boolean);
begin
Connection.Transport := trpTCP;
Accept := True;
end;
クライアントがサーバーに接続すると、この接続は TCP として定義され、WebSocket の代わりにプレーン TCP プロトコルを使用します。プレーン TCP 接続はテキスト メッセージとバイナリ メッセージを区別しないため、受信したすべてのメッセージは OnBinary イベントで処理されます。
メッセージの終わり
メッセージが大きい場合、フラグメント化されて受信されることがあります。どのバイトを探すかを指定することでメッセージの終わりを検出するメソッドがあります。例: STOMP プロトコルでは、すべてのメッセージはバイト 0 と 10 で終わります。
procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
Connection.AddTCPEndOfFrame(0);
Connection.AddTCPEndOfFrame(10);
end;