TsgcWSPServer_WAMPイベント › OnBeforeSubscription

OnBeforeSubscription イベント

クライアントが SUBSCRIBE フレームを送信したときに発生し、サーバーがサブスクリプションを承認または拒否する機会を与えます。

構文

property OnBeforeSubscription: TsgcWSBeforeSubscriptionEvent;
// TsgcWSBeforeSubscriptionEvent = procedure(Connection: TsgcWSConnection; const Subscription: String; var Accept: Boolean) of object

デフォルト値

解説

Subscription はクライアントが参加しようとしているトピック URI です(OnPrefix で登録されたプレフィックスに対して既に解決済み)。Accept はデフォルトで True に設定されており、ブローカーはクライアントをサブスクライバーとして登録し、EVENT メッセージの転送を開始します。False に設定すると、SUBSCRIBE がサイレントにドロップされます。ブローカーはクライアントをトピックに追加せず、確認も送信されません(WAMP v1 には SUBSCRIBED フレームがありません)。典型的な使用例はアクセス制御です。Connection に添付された認証済み ID を ACL、ネームスペースポリシー、またはレート制限と照合します。

使用例


procedure TForm1.WAMPServerBeforeSubscription(Connection: TsgcWSConnection;
  const Subscription: String; var Accept: Boolean);
begin
  // allow public topics, reject admin channels for non-admin clients
  Accept := not StartsText('http://example.com/admin/', Subscription);
  Memo1.Lines.Add(Format('[%s] SUBSCRIBE %s -> %s',
    [Connection.Guid, Subscription, BoolToStr(Accept, True)]));
end;

イベントに戻る