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 }); } } }
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); }