5

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

4

0 回答 0