TCP 接続

サポート対象

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

デフォルトでは、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;