使用订阅拦截器可以设置自定义拦截器来控制 MQTT 客户端可以订阅哪些主题。

  1. var optionsBuilder = new MqttServerOptionsBuilder()
  2. .WithSubscriptionInterceptor(context =>
  3. {
  4. if (context.TopicFilter.Topic.StartsWith("admin/foo/bar") && context.ClientId != "theAdmin")
  5. {
  6. context.AcceptSubscription = false;
  7. }
  8. if (context.TopicFilter.Topic.StartsWith("the/secret/stuff") && context.ClientId != "Imperator")
  9. {
  10. context.AcceptSubscription = false;
  11. context.CloseConnection = true;
  12. }
  13. })
  14. .Build();