Я пытаюсь узнать больше о повторном подключении сервера подключения к веб-сокету к серверу, когда моя служба веб-сокета выходит из строя. Я хорошо изучил документы и другие проблемы (в основном поиск клиента на сервере), но не могу решить, что я хочу реализовать.
Итак, цель состоит в том, чтобы микросервис A подключался к веб-сокету микросервиса B при запуске сервиса A. Все работает хорошо, но когда я отключаю службу B, состояние HubConnection всегда отключается в службе A, когда я снова загружаю B. Так, например, используя Microsoft.AspNetCore.SignalR.Client 1.1.0
public class MessageHubProxy : IMessageHubProxy
{
private readonly HubConnection _hubConnection;
public MessageHubProxy()
{
_hubConnection = new HubConnectionBuilder().WithUrl("http://localhost:54994/messageHub").Build();
InitiateConenction().Wait();
}
private async Task InitiateConenction()
{
await _hubConnection.StartAsync();
}
public void AddMessage(string message)
{
_hubConnection.InvokeAsync("addMessage", post);
}
}
когда я смотрю на _hubConnection
в AddMessage после того, как я останавливаю и запускаю службу B и вызываю AddMessage.. Я вижу следующие свойства на HubConnection
:
HandshakeTimeout: 15 seconds,
KeepAliveInterval: 15 seconds,
ServerTimeout: 30 seconds,
State: Disconnected
Из того, что я прочитал, может быть, я все еще неправильно понимаю использование HandshakeTimeout, KeepAliveInterval и ServerTimeout.. может быть, я могу использовать один из них для повторного подключения службы A после запуска службы B? Или я вижу, что тип HubConnection имеет .On<>
, может быть, мне нужно поймать Disconnect и повторить вызов вручную? Любая информация о том, как я могу обрабатывать переподключения между серверами в этом смысле, очень ценится!