Exemple #1
0
        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 #2
0
 public void Unsubscribe(SseSubscriber subscriber)
 {
     if (!_actor.IsStopped)
     {
         Action <ISsePublisher> consumer = actor => actor.Unsubscribe(subscriber);
         if (_mailbox.IsPreallocated)
         {
             _mailbox.Send(_actor, consumer, null, UnsubscribeRepresentation);
         }
         else
         {
             _mailbox.Send(new LocalMessage <ISsePublisher>(_actor, consumer, UnsubscribeRepresentation));
         }
     }
     else
     {
         _actor.DeadLetters.FailedDelivery(new DeadLetter(_actor, UnsubscribeRepresentation));
     }
 }
Exemple #3
0
 public void Unsubscribe(SseSubscriber subscriber)
 {
     subscriber.Close();
     _subscribers.Remove(subscriber.Id);
 }
Exemple #4
0
 public void Subscribe(SseSubscriber subscriber)
 => _subscribers.Add(subscriber.Id, subscriber);