我目前正在研究一种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;
}
}
}
如果在彻底断开连接后再次尝试与同一对象连接,则会出现错误消息,提示“ Websocket已经启动”。我不了解的WebSocket是什么?
编辑-我将其构建到NuGet包中,以用作其他应用程序的库,因此由于程序将消耗此功能的原因,我需要保留.NET 4.6。