private async void StartMqttServer() { var mqttServer = new MQTTnet.MqttFactory().CreateMqttServer(); var optionsBuilder = new MqttServerOptionsBuilder() .WithConnectionBacklog(100) .WithDefaultEndpointPort(1883); mqttServer.ClientConnected += MqttServer_ClientConnected; mqttServer.ClientDisconnected += MqttServer_ClientDisconnected; await mqttServer.StartAsync(optionsBuilder.Build()); }
public bool Connect() { try { var factory = new MQTTnet.MqttFactory(); mqttClient = factory.CreateMqttClient(); var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder() .WithTcpServer(this.Ip, this.Port) .Build(); mqttClient.ConnectAsync(options, System.Threading.CancellationToken.None); mqttClient.ConnectedHandler = new MQTTnet.Client.Connecting.MqttClientConnectedHandlerDelegate(e => { if (Subscriptions != null) { MakeSubscriptions(); } }); mqttClient.ApplicationMessageReceivedHandler = new MQTTnet.Client.Receiving.MqttApplicationMessageReceivedHandlerDelegate(e => { String msg = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload); var deserializedData = JsonConvert.DeserializeObject <EventData>(msg); deserializedData.Id = e.ApplicationMessage.Topic; foreach (var s in Subscriptions) { if (s.Value.EventId == deserializedData.Id) { var pointer = s.Value.FunctionPointer; var parameters = pointer.Method.GetParameters(); var parameterArrayForInvoke = new object[parameters.Length]; foreach (var eintrag in s.Value.IntegrationFlow) { int currentParameterCallIndex = 0; for (; currentParameterCallIndex < parameters.Length; currentParameterCallIndex++) { if (parameters[currentParameterCallIndex].Name == eintrag.Key) { var currentParameterCallType = pointer.Method.GetParameters()[currentParameterCallIndex].ParameterType; break; } } Object deserializedParameter = null; deserializedParameter = deserializedData.Data[eintrag.Value]; parameterArrayForInvoke[currentParameterCallIndex] = deserializedParameter; } pointer.DynamicInvoke(parameterArrayForInvoke); } } }); } catch { return(false); } return(true); }