C# .net WebSocket 客户端永远不会断开连接

标签 c# .net websocket

在我使用 System.Net.WebSockets 的应用程序中使用 C# Websocket 客户端。我发送和接收的所有代码都运行良好,但是我终生无法成功断开连接(我需要这样做,然后我可以再次使用带有不同主机名的客户端)。我创建了一个快速演示来展示我的问题。

这是我的程序代码:

class Program
{
    static void Main(string[] args)
    {
        GetDocList();

        Console.ReadLine();
    }
    static async Task<string> GetDocList()
    {
        var client = new myWSClient(new Uri("ws://localhost:9999/qlcplusWS"));
        var docs = await client.ConnectAndDisconnect();
        return docs;
    }

}

这是我正在使用的类

public class myWSClient
{

    private ClientWebSocket _client;
    public Uri _myURI;
    public myWSClient(Uri MyURI)
    {
        _client = new ClientWebSocket();
        _myURI = MyURI;
    }

    public async Task<string> ConnectAndDisconnect()
    {
        string dummyreturn = "";
        await _client.ConnectAsync(_myURI, CancellationToken.None);
        Console.WriteLine("Connected");
        string status = "";
        Console.WriteLine("Waiting to Disconnect, but it will never happen :(");
        await _client.CloseAsync(WebSocketCloseStatus.NormalClosure, status, CancellationToken.None);
        Console.WriteLine("Disconnected mate");
        return dummyreturn;
    }

}

是我使用了错误的方法还是我的代码只是语法错误?

最佳答案

您必须等待这些方法返回,因为它们是异步的,并且主函数将在启动 GetDocList() 方法的任务后继续执行。

GetDocList().Wait();

关于C# .net WebSocket 客户端永远不会断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340796/

相关文章:

c# - ClickOnce 部署 "Activation failed"FileNotFoundException

c# - Mvc 起始页使用带有域的 azure 上的区域

c# - TCP/IP 消息帧

c# - Azure DevOps 发布管道,从 C# 代码读取环境变量

c# - 使用反射获取执行程序集名称

c# - 绑定(bind)到 WPF Canvas 上元素的 X Y 坐标

c# - 如何在 UWP 中散列文件(MD5、SHA..v.v..)

scala - Play Scala Akka WebSockets 更改 Actor 路径

javascript - angular 2 transient 提供者而不是单例

javascript - WebSocket URL 变量未定义