【发布时间】:2018-09-06 14:35:36
【问题描述】:
在我的 .NET Core 控制台应用程序中,我使用 ClientWebSocket 对象的集合来接收一些数据。当出现问题并发生异常时,我想关闭所有 websocket。
我试图这样做:
foreach (var socket in _sockets)
{
if (socket.State == WebSocketState.Open || socket.State == WebSocketState.Connecting)
{
socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait();
}
}
但是socket.State == WebSocketState.Connecting的情况有一个例外:
System.AggregateException: '发生一个或多个错误。 (对于此操作,WebSocket 处于无效状态('正在连接')。有效状态是:'Open, CloseReceived, CloseSent')'
我知道我可以将socket.Abort() 用于WebSocketState.Connecting 以及WebSocketState.Open。
问题是关闭连接是否是最合适的方法 - 使用 CloseAsync 代表 WebSocketState.Open 和 Abort 代表 WebSocketState.Connecting?
【问题讨论】:
标签: c# .net-core clientwebsocket