TsgcWebSocketLoadBalancerServer › イベント › OnClientMessage
ダウンストリームクライアントからテキストフレームを受信したとき、それが選択されたバックエンドサーバーに転送される前に発火します。
property OnClientMessage: TsgcWSLBServerMessageEvent;
// TsgcWSLBServerMessageEvent = procedure(Connection: TsgcWSConnection; Text: String; var Handled: Boolean) of object
—
OnClientMessage は、バランスされたクライアントからバックエンドサーバーに向かう途中で受信されたすべてのテキスト WebSocket フレームに対して発生します。Connection はダウンストリームのクライアントセッションを識別し、Text はデコードされた UTF-8 ペイロードを持ちます。Handled を True に設定すると、ロードバランサー内でメッセージを消費します(この場合、バックエンドへのリレーは発生しません)。これは通常、ロードバランサーがバックエンドに代わって制御メッセージに応答したり、無効なコンテンツをフィルタリングしたりする際に使用します。Handled を False(デフォルト)のままにすると、ロードバランサーはメッセージを変更せずに転送します。
procedure OnClientMessage(Connection: TsgcWSConnection; Text: String;
var Handled: Boolean);
begin
// answer ping messages directly from the load balancer
if SameText(Text, 'ping') then
begin
Connection.WriteData('pong');
Handled := True;
end;
end;