TsgcWSPServer_WAMP › Eventi › OnBeforeSubscription
Viene generato quando un client invia un frame SUBSCRIBE, dando al server la possibilità di accettare o rifiutare la sottoscrizione.
property OnBeforeSubscription: TsgcWSBeforeSubscriptionEvent;
// TsgcWSBeforeSubscriptionEvent = procedure(Connection: TsgcWSConnection; const Subscription: String; var Accept: Boolean) of object
—
Subscription è l'URI del topic che il client chiede di iscriversi (già risolto rispetto a qualsiasi prefisso precedentemente registrato con OnPrefix). Accept è impostato su True per default, il che significa che il broker registrerà il client come sottoscrittore e inizierà a inoltrare i messaggi EVENT. Impostarlo su False per eliminare silenziosamente il SUBSCRIBE — il broker non aggiungerà il client al topic e non verrà inviata alcuna conferma (WAMP v1 non ha un frame SUBSCRIBED). L'uso tipico è il controllo degli accessi: verificare l'identità autenticata associata a Connection rispetto a un ACL, a una politica di namespace o a un limite di velocità.
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;