Esempio n. 1
0
 internal void Server_ClientDisconnected(IMqttServerEx server, MqttServerClientDisconnectedEventArgs args)
 {
     try
     {
         if (_device.Exists(args.ClientId))
         {
             var _xdev = _device.Get <Device>(args.ClientId);
             var dev   = _xdev.Value;
             using (var scope = _scopeFactor.CreateScope())
                 using (var _dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>())
                 {
                     var devtmp = _dbContext.Device.FirstOrDefault(d => d.Id == dev.Id);
                     devtmp.LastActive = DateTime.Now;
                     _dbContext.SaveChanges();
                     _logger.LogInformation($"Server_ClientDisconnected   ClientId:{args.ClientId} DisconnectType:{args.DisconnectType}  Device is {devtmp.Name }({devtmp.Id}) ");
                 }
         }
         else
         {
             _logger.LogWarning($"Server_ClientDisconnected ClientId:{args.ClientId} DisconnectType:{args.DisconnectType}, 未能在缓存中找到");
         }
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, $"Server_ClientDisconnected ClientId:{args.ClientId} DisconnectType:{args.DisconnectType},{ex.Message}");
     }
 }
Esempio n. 2
0
 internal void Server_ClientDisconnected(IMqttServerEx server, MqttServerClientDisconnectedEventArgs args)
 {
     Task.Run(async() =>
     {
         try
         {
             var dev = await FoundDevice(args.ClientId);
             if (dev != null)
             {
                 using (var scope = _scopeFactor.CreateScope())
                     using (var _dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>())
                     {
                         var devtmp        = _dbContext.Device.FirstOrDefault(d => d.Id == dev.Id);
                         devtmp.LastActive = DateTime.Now;
                         devtmp.Online     = false;
                         _dbContext.SaveChanges();
                         _logger.LogInformation($"Server_ClientDisconnected   ClientId:{args.ClientId} DisconnectType:{args.DisconnectType}  Device is {devtmp.Name }({devtmp.Id}) ");
                     }
             }
             else
             {
                 _logger.LogWarning($"Server_ClientDisconnected ClientId:{args.ClientId} DisconnectType:{args.DisconnectType}, 未能在缓存中找到");
             }
         }
         catch (Exception ex)
         {
             _logger.LogError(ex, $"Server_ClientDisconnected ClientId:{args.ClientId} DisconnectType:{args.DisconnectType},{ex.Message}");
         }
     });
 }
Esempio n. 3
0
 public CheckDevices(ILogger <CheckDevices> logger, IServiceScopeFactory scopeFactor, IMqttServerEx serverEx
                     , IOptions <AppSettings> options)
 {
     _mcsetting   = options.Value.MqttClient;
     _logger      = logger;
     _scopeFactor = scopeFactor;
     _serverEx    = serverEx;
 }
Esempio n. 4
0
 internal void Server_ClientDisconnected(IMqttServerEx server, MqttServerClientDisconnectedEventArgs args)
 {
     try
     {
         Devices.Remove(args.ClientId);
     }
     catch (Exception)
     {
     }
 }
Esempio n. 5
0
 public MQTTServerHandler(ILogger <MQTTServerHandler> logger, IServiceScopeFactory scopeFactor, IMqttServerEx serverEx
                          , IOptions <AppSettings> options
                          )
 {
     _mcsetting = options.Value.MqttClient;
     _logger    = logger;
     scope      = scopeFactor.CreateScope();
     _dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
     _serverEx  = serverEx;
 }
Esempio n. 6
0
 public CheckDevices(ILogger <CheckDevices> logger, IServiceScopeFactory scopeFactor, IMqttServerEx serverEx
                     , IOptions <AppSettings> options, IEasyCachingProviderFactory factory)
 {
     _mcsetting   = options.Value.MqttClient;
     _logger      = logger;
     _scopeFactor = scopeFactor;
     _factory     = factory;
     _serverEx    = serverEx;
     _device      = _factory.GetCachingProvider("iotsharp");
 }
Esempio n. 7
0
 public MQTTServerHandler(ILogger <MQTTServerHandler> logger, IServiceScopeFactory scopeFactor, IMqttServerEx serverEx
                          , IOptions <AppSettings> options, ICapPublisher queue, IEasyCachingProviderFactory factory
                          )
 {
     _mcsetting   = options.Value.MqttClient;
     _logger      = logger;
     _scopeFactor = scopeFactor;
     _factory     = factory;
     _serverEx    = serverEx;
     _queue       = queue;
 }
Esempio n. 8
0
 public DevicesController(UserManager <IdentityUser> userManager,
                          SignInManager <IdentityUser> signInManager, ILogger <DevicesController> logger, IMqttServerEx serverEx, ApplicationDbContext context, IMqttClientOptions mqtt, IStorage storage)
 {
     _context       = context;
     _mqtt          = mqtt;
     _userManager   = userManager;
     _signInManager = signInManager;
     _logger        = logger;
     _storage       = storage;
     _serverEx      = serverEx;
 }
Esempio n. 9
0
        public MQTTServerHandler(ILogger <MQTTServerHandler> logger, IServiceScopeFactory scopeFactor, IMqttServerEx serverEx, DiagnosticsService diagnosticsService,
                                 RuntimeStatusHandler systemStatusService, IOptions <AppSettings> options
                                 )
        {
            _mcsetting      = options.Value.MqttClient;
            _logger         = logger;
            scope           = scopeFactor.CreateScope();
            _dbContext      = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
            _serverEx       = serverEx;
            InboundCounter  = diagnosticsService.CreateOperationsPerSecondCounter("mqtt.inbound_rate");
            OutboundCounter = diagnosticsService.CreateOperationsPerSecondCounter("mqtt.outbound_rate");

            systemStatusService.Set("mqtt.subscribers_count", () => Subscribers.Count);
            systemStatusService.Set("mqtt.incoming_messages_count", () => IncomingMessages.Count);
            systemStatusService.Set("mqtt.inbound_rate", () => InboundCounter.Count);
            systemStatusService.Set("mqtt.outbound_rate", () => OutboundCounter.Count);
            systemStatusService.Set("mqtt.connected_clients_count", () => serverEx.GetClientStatusAsync().GetAwaiter().GetResult().Count);
        }
Esempio n. 10
0
 public MqttEventsHandler(ILogger <MqttEventsHandler> logger, ApplicationDbContext dbContext, IMqttServerEx serverEx)
 {
     _logger    = logger;
     _dbContext = dbContext;
     _serverEx  = serverEx;
 }