Exemplo n.º 1
0
        public async Task InterceptApplicationMessagePublishAsync(MqttApplicationMessageInterceptorContext context)
        {
            context.AcceptPublish = true;
            if (context.ApplicationMessage == null)
            {
                return;
            }

            var payload = context.ApplicationMessage.Payload == null
                ? null
                : Encoding.UTF8.GetString(context.ApplicationMessage?.Payload);

            if (context.ApplicationMessage.Retain)
            {
                if (context.ApplicationMessage.Topic.StartsWith("mcu/"))
                {
                    return;
                }

                var msg = _repo.AddMessage(new MqttMessage
                {
                    Created     = DateTime.Now,
                    Message     = payload,
                    Topic       = context.ApplicationMessage.Topic,
                    ContentType = context.ApplicationMessage.ContentType
                });
                await _repo.SaveChangesAsync();
            }

            // _logger.LogInformation(
            //     $"Message: ClientId = {context.ClientId}, Topic = {context.ApplicationMessage?.Topic},"
            //     + $" Payload = {payload}, QoS = {context.ApplicationMessage?.QualityOfServiceLevel},"
            //     + $" Retain-Flag = {context.ApplicationMessage?.Retain}");
        }
Exemplo n.º 2
0
        public async Task InterceptApplicationMessagePublishAsync(MqttApplicationMessageInterceptorContext context)
        {
            //context.AcceptPublish = true;
            if (context.ApplicationMessage == null)
            {
                return;
            }

            var payload = context.ApplicationMessage.Payload == null
                ? null
                : Encoding.ASCII.GetString(context.ApplicationMessage?.Payload, 0, context.ApplicationMessage.Payload.Count());

            if (payload == null)
            {
                _logger.LogError(
                    $"Payload is null Message: ClientId = {context.ClientId}, Topic = {context.ApplicationMessage?.Topic},"
                    + $" Payload = {payload}, QoS = {context.ApplicationMessage?.QualityOfServiceLevel},"
                    + $" Retain-Flag = {context.ApplicationMessage?.Retain}");
                return;
            }

            var afterPars = Functions.GetPayload(context.ApplicationMessage?.Payload);

            if (context.ApplicationMessage.Retain)
            {
                var msg = _repo.AddMessage(new MqttMessage
                {
                    Created     = DateTime.Now,
                    Message     = JsonConvert.SerializeObject(afterPars, Formatting.Indented),
                    Topic       = context.ApplicationMessage.Topic,
                    ContentType = context.ApplicationMessage.ContentType
                });
                //var tree = context.ApplicationMessage.Topic.Split('/');

                if (await _repo.SaveChangesAsync())
                {
                    context.AcceptPublish = true;
                }
            }

            _logger.LogInformation(
                $"Message: ClientId = {context.ClientId}, Topic = {context.ApplicationMessage?.Topic},"
                + $" Payload = {payload}, QoS = {context.ApplicationMessage?.QualityOfServiceLevel},"
                + $" Retain-Flag = {context.ApplicationMessage?.Retain}");
        }