public async void Notify(object sender, EventAddedEventArgs args) { var @event = args.Event; @event.Thing = _thing; @event.Metadata = _descriptor.CreateDescription(@event); var webSockets = _thing.AvailableEvent.ContainsKey(@event.Name) ? _thing.AvailableEvent[@event.Name].Subscribers : null; if (webSockets != null && webSockets.Any()) { var message = new Dictionary <string, object> { [MESSAGE_TYPE] = MessageType.Event.ToString().ToLower(), [DATA] = @event.Metadata }; await NotifySubscribersAsync(webSockets, message, CancellationToken.None); } }
public async void OnEvenAdded(object?sender, EventAddedEventArgs args) { if (!(sender is Thing thing)) { _logger.LogWarning("The sender is not a Thing, not going to notify."); return; } if (thing.ThingContext.EventsSubscribes[args.EventName].IsEmpty) { _logger.LogTrace("No subscriber for this event. [Thing: {thingName}][Event: {eventName}]", thing.Name, args.EventName); return; } var message = _convert.Serialize(new WebSocketResponse("event", new Dictionary <string, object?> { [_option.PropertyNamingPolicy.ConvertName(args.EventName)] = args.Event })); _logger.LogInformation("Going to notify event via Web Socket. [Thing: {thingName}][Event: {eventName}]", thing.Name, args.EventName); foreach (var(_, socket) in thing.ThingContext.EventsSubscribes[args.EventName].ToArray()) { if (socket.State != WebSocketState.Open || socket.CloseStatus.HasValue) { _logger.LogInformation("The Web Socket is not open or was requested to close. [Thing: {thingName}][Event: {eventName}]", thing.Name, args.EventName); return; } await socket.SendAsync(message, WebSocketMessageType.Text, true, CancellationToken.None) .ConfigureAwait(false); } }
protected void OnEventAdded(EventAddedEventArgs eventAddedEventArgs) { var temp = EventAdded; temp?.Invoke(this, eventAddedEventArgs); }
private void DeviceInstanceEventAdded(object sender, EventAddedEventArgs e) { AddDeviceEvent(e.Event); }