为什么不创建ClientWebSocket的新实例就不能重新打开封闭的ClientWebSocket?

时间:2019-05-28 13:23:49

标签: c# websocket system.net.websockets

我目前正在研究一种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。

0 个答案:

没有答案