Почему закрытый ClientWebSocket не может быть вновь открыт без создания нового экземпляра ClientWebSocket?
В настоящее время я работаю над System.Net.WebSockets
реализация, которая будет использовать сотовые сети для отправки пакетов данных об устройстве в режиме реального времени. Использование сотовой сети означает, что мое решение должно быть в состоянии повторно подключить сокет, когда сеть иногда теряет соединение. Единственный способ, которым я смог это сделать, - это создать новый экземпляр ClientWebSocket
и затем отправка сообщения о подключении асинхронно.
Это не мой точный код, но, надеюсь, он поможет понять, что я пытаюсь сделать.
void PublisherConnect()
{
myWebSocket = new ClientWebSocket();
Task.Run(async () =>
{
if (myWebSocket.ConnectionState != WebSocketState.Open)
{
try
{
await myWebSocket.ConnectAsync(HostString);
}
catch (WebSocketException ee)
{
Debug.WriteLine(ee.Message);
}
}
}
}
internal async Task ConnectAsync(Uri uri)
{
using (var cts = new CancellationTokenSource())
{
try
{
await myWebSocket.ConnectAsync(uri, CancellationToken.None);
manualState = false;
}
catch (Exception)
{
throw;
}
}
}
Если я пытаюсь снова подключиться с тем же объектом после чистого отключения, выдается сообщение об ошибке "Веб-сокет уже запущен". Что такого в WebSockets, чего я не понимаю?
РЕДАКТИРОВАТЬ - Я встраиваю это в пакет NuGet, который будет использоваться в качестве библиотеки для других приложений, поэтому мне нужно оставаться на.NET 4.6 из-за того, как программы будут использовать эту функцию.