Add ClientId for application messages published by the server.

This commit is contained in:
Christian Kratky
2019-04-24 21:37:29 +02:00
parent 9da3377aa7
commit 6ed3b0cedd
4 changed files with 21 additions and 2 deletions
+3 -1
View File
@@ -4,6 +4,8 @@ namespace MQTTnet.Server
{ {
public interface IMqttServerOptions public interface IMqttServerOptions
{ {
string ClientId { get; set; }
bool EnablePersistentSessions { get; } bool EnablePersistentSessions { get; }
int MaxPendingMessagesPerClient { get; } int MaxPendingMessagesPerClient { get; }
@@ -19,6 +21,6 @@ namespace MQTTnet.Server
MqttServerTcpEndpointOptions DefaultEndpointOptions { get; } MqttServerTcpEndpointOptions DefaultEndpointOptions { get; }
MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; } MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; }
IMqttServerStorage Storage { get; } IMqttServerStorage Storage { get; }
} }
} }
@@ -364,7 +364,13 @@ namespace MQTTnet.Server
return null; return null;
} }
var interceptorContext = new MqttApplicationMessageInterceptorContext(sender?.ClientId, applicationMessage); var senderClientId = sender?.ClientId;
if (sender == null)
{
senderClientId = _options.ClientId;
}
var interceptorContext = new MqttApplicationMessageInterceptorContext(senderClientId, applicationMessage);
await interceptor.InterceptApplicationMessagePublishAsync(interceptorContext).ConfigureAwait(false); await interceptor.InterceptApplicationMessagePublishAsync(interceptorContext).ConfigureAwait(false);
return interceptorContext; return interceptorContext;
} }
@@ -8,6 +8,8 @@ namespace MQTTnet.Server
public MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; } = new MqttServerTlsTcpEndpointOptions(); public MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; } = new MqttServerTlsTcpEndpointOptions();
public string ClientId { get; set; }
public bool EnablePersistentSessions { get; set; } public bool EnablePersistentSessions { get; set; }
public int MaxPendingMessagesPerClient { get; set; } = 250; public int MaxPendingMessagesPerClient { get; set; } = 250;
@@ -147,6 +147,15 @@ namespace MQTTnet.Server
return this; return this;
} }
/// <summary>
/// Gets or sets the client ID which is used when publishing messages from the server directly.
/// </summary>
public MqttServerOptionsBuilder WithClientId(string value)
{
_options.ClientId = value;
return this;
}
public IMqttServerOptions Build() public IMqttServerOptions Build()
{ {
return _options; return _options;