У меня есть служебное приложение, которое работает почти как объединительная плата SignalR, поэтому я подумал, что было бы неплохо создать собственную реализацию IMessageBus
для взаимодействия с серверной частью, а не разворачивать свою собственную. Проблема в том, что я не могу найти много информации об этом контракте. Хотя я просматривал код (выглядит очень хорошо), я изо всех сил пытаюсь понять некоторые концепции.
public interface IMessageBus
{
Task Publish(Message message);
IDisposable Subscribe(ISubscriber subscriber, string cursor, Func<MessageResult, object, Task<bool>> callback, int maxMessages, object state);
}
Task Publish(Message message);
Этот простой, в основном он должен отправить сообщение на серверную часть. Я не беспокоюсь об этом, потому что мое приложение однонаправлено от сервера к клиенту.
IDisposable Subscribe(ISubscriber subscriber, string cursor, Func<MessageResult, object, Task<bool>> callback, int maxMessages, object state);
return
: Despite of sayingIDisposable
, I have seen it always return a Subscription object, but whyIDisposable
?subscriber
идентифицирует соединение. Это соединение может подписаться или отказаться от подписки на группы.cursor
: идентификатор последнего полученного сообщения.callback
: когда выполняется этот обратный вызов?state
: что это такое?
Может кто-нибудь объяснить мне, как работает этот метод?