public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext <UsersHub>();

            if (UsersConnections.ContainsKey(deviceMessageEvent.AppUserId))
            {
                UserDeviceService userDeviceService = new UserDeviceService();
                var device = userDeviceService.GetById(deviceMessageEvent.DeviceId);

                if (device != null)
                {
                    var connection = UsersConnections[deviceMessageEvent.AppUserId];

                    context.Clients.Client(connection.ConnectionId).notifyAboutDeviceMessageReceived(new DeviceMessageReceivedNotification()
                    {
                        DateTime   = deviceMessageEvent.DateTime,
                        Message    = deviceMessageEvent.Message,
                        DeviceName = device.Name,
                        Id         = device.Id
                    });
                }
            }
        }
Esempio n. 2
0
        public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent)
        {
            var notificationRulesService = new NotificationRuleService();
            var rules =
                notificationRulesService.Collection.Find(
                    x => x.AppUserId == deviceMessageEvent.AppUserId && x.SourceDeviceId == deviceMessageEvent.DeviceId).ToList();

            if (rules.Any())
            {
                var deviceService = new UserDeviceService();
                foreach (var notificationRule in rules)
                {
                    if (notificationRule.SourceMessage == deviceMessageEvent.Message)
                    {
                        var device = deviceService.GetById(notificationRule.TargetDeviceId);
                        if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId))
                        {
                            var devicesHub = GlobalHost.ConnectionManager.GetHubContext <DevicesHub>();
                            devicesHub.Clients.Client(device.ConnectionId).NotificationRule(notificationRule.TargetMessage);
                        }
                    }
                }
            }
        }
 public void RegisterDeviceMessageEvent(DeviceMessageEvent deviceMessageEvent)
 {
     OnDeviceMessageReceived?.Invoke(deviceMessageEvent);
 }