private async Task DequeueMessagesAsync() { while (!_stopTokenSource.IsCancellationRequested) { PushMessageEx pushmessage = await _messagesQueue.DequeueAsync(_stopTokenSource.Token); if (!_stopTokenSource.IsCancellationRequested) { using (IServiceScope serviceScope = _serviceProvider.CreateScope()) { IPushSubscriptionStore subscriptionStore = serviceScope.ServiceProvider.GetRequiredService <IPushSubscriptionStore>(); //await subscriptionStore.ForEachSubscriptionAsync((PushSubscription subscription) => //{ // // Fire-and-forget // _notificationService.SendNotificationAsync(subscription, message, _stopTokenSource.Token); //}, _stopTokenSource.Token); await subscriptionStore.ForEachSubscriptionAsyncEx((SWSubscription sub) => { PushSubscription subscription = new PushSubscription(); subscription.Endpoint = sub.Endpoint; subscription.SetKey(PushEncryptionKeyName.Auth, sub.Auth); subscription.SetKey(PushEncryptionKeyName.P256DH, sub.P256DH); // subscription.Keys // Fire-and-forget _notificationService.SendNotificationAsync(subscription, pushmessage.pushmessage, _stopTokenSource.Token); }, _stopTokenSource.Token); } } } }
public void Enqueue(PushMessageEx message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } _messages.Enqueue(message); _messageEnqueuedSignal.Release(); }
public IActionResult SendNotification([FromBody] PushMessageViewModel message) { PushMessageEx msg = new PushMessageEx(); msg.pushmessage = new PushMessage(message.Notification) { Topic = message.Topic, Urgency = message.Urgency }; msg.MemberID = 1;// test _pushNotificationsQueue.Enqueue(msg); return(NoContent()); }