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