TsgcWSPServer_WAMP › Zdarzenia › OnBeforeSubscription
Wywoływane, gdy klient wysyła ramkę SUBSCRIBE, dając serwerowi możliwość zaakceptowania lub odrzucenia subskrypcji.
property OnBeforeSubscription: TsgcWSBeforeSubscriptionEvent;
// TsgcWSBeforeSubscriptionEvent = procedure(Connection: TsgcWSConnection; const Subscription: String; var Accept: Boolean) of object
—
Subscription to URI tematu, do którego klient żąda dołączenia (już rozwiązany względem prefiksu zarejestrowanego wcześniej przez OnPrefix). Accept jest domyślnie ustawiony na True, co oznacza, że broker zarejestruje klienta jako subskrybenta i rozpocznie przekazywanie komunikatów EVENT. Ustaw na False, aby dyskretnie odrzucić subskrypcję — broker nie doda klienta do tematu i nie zostanie wysłane żadne potwierdzenie (WAMP v1 nie ma ramki SUBSCRIBED). Typowym zastosowaniem jest kontrola dostępu: sprawdzenie tożsamości uwierzytelnionej powiązanej z Connection względem listy ACL, polityki przestrzeni nazw lub limitu szybkości.
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;