在我使用 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/