TsgcWSPServer_WAMP › Events › 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 帧)。典型用法是访问控制:根据 ACL、命名空间策略或速率限制检查与 Connection 关联的已认证身份。
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;