Browse Source

Add ClientId for application messages published by the server.

release/3.x.x
Christian Kratky 5 years ago
parent
commit
6ed3b0cedd
4 changed files with 21 additions and 2 deletions
  1. +3
    -1
      Source/MQTTnet/Server/IMqttServerOptions.cs
  2. +7
    -1
      Source/MQTTnet/Server/MqttClientSessionsManager.cs
  3. +2
    -0
      Source/MQTTnet/Server/MqttServerOptions.cs
  4. +9
    -0
      Source/MQTTnet/Server/MqttServerOptionsBuilder.cs

+ 3
- 1
Source/MQTTnet/Server/IMqttServerOptions.cs View File

@@ -4,6 +4,8 @@ namespace MQTTnet.Server
{
public interface IMqttServerOptions
{
string ClientId { get; set; }

bool EnablePersistentSessions { get; }

int MaxPendingMessagesPerClient { get; }
@@ -19,6 +21,6 @@ namespace MQTTnet.Server
MqttServerTcpEndpointOptions DefaultEndpointOptions { get; }
MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; }

IMqttServerStorage Storage { get; }
IMqttServerStorage Storage { get; }
}
}

+ 7
- 1
Source/MQTTnet/Server/MqttClientSessionsManager.cs View File

@@ -364,7 +364,13 @@ namespace MQTTnet.Server
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);
return interceptorContext;
}


+ 2
- 0
Source/MQTTnet/Server/MqttServerOptions.cs View File

@@ -8,6 +8,8 @@ namespace MQTTnet.Server

public MqttServerTlsTcpEndpointOptions TlsEndpointOptions { get; } = new MqttServerTlsTcpEndpointOptions();

public string ClientId { get; set; }

public bool EnablePersistentSessions { get; set; }

public int MaxPendingMessagesPerClient { get; set; } = 250;


+ 9
- 0
Source/MQTTnet/Server/MqttServerOptionsBuilder.cs View File

@@ -147,6 +147,15 @@ namespace MQTTnet.Server
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()
{
return _options;


Loading…
Cancel
Save