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

时间:2016-07-13 00:21:27

标签: c# .net websocket

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

这是我的程序代码:

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;
    }

}

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

1 个答案:

答案 0 :(得分:0)

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

GetDocList().Wait();