public void Unsubscribe(SseSubscriber subscriber)
 {
     if (_subscribers.Remove(subscriber.Id !))
     {
         subscriber.Close();
     }
 }
        public void SubscribeToStream(string streamName, Type feedClass, int feedPayload, int feedInterval, string feedDefaultId)
        {
            var clientContext = Context?.ClientContext;

            clientContext?.WhenClosing(UnsubscribeRequest() !);

            var correlationId = Context?.Request?.HeaderValueOr(RequestHeader.XCorrelationID, string.Empty);

            var subscriber = new SseSubscriber(
                streamName,
                new SseClient(clientContext),
                correlationId,
                Context?.Request?.HeaderValueOr(RequestHeader.LastEventID, string.Empty));

            PublisherFor(streamName, feedClass, feedPayload, feedInterval, feedDefaultId).Subscribe(subscriber);

            Completes?.With(Response.Of(Response.ResponseStatus.Ok, ResponseHeader.WithHeaders(ResponseHeader.WithCorrelationId(correlationId))));
        }
Exemple #3
0
 public void Unsubscribe(SseSubscriber subscriber)
 {
     if (!_actor.IsStopped)
     {
         Action <ISsePublisher> consumer = actor => actor.Unsubscribe(subscriber);
         if (_mailbox.IsPreallocated)
         {
             _mailbox.Send(_actor, consumer, null, UnsubscribeRepresentation2);
         }
         else
         {
             _mailbox.Send(new LocalMessage <ISsePublisher>(_actor, consumer, UnsubscribeRepresentation2));
         }
     }
     else
     {
         _actor.DeadLetters?.FailedDelivery(new DeadLetter(_actor, UnsubscribeRepresentation2));
     }
 }
 public void Subscribe(SseSubscriber subscriber)
 => _subscribers.Add(subscriber.Id !, subscriber);