在我的 .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 处于无效状态(“正在连接”)。有效状态为:“打开、关闭接收、关闭发送”)
我知道我可以使用socket.Abort()
forWebSocketState.Connecting
和 for WebSocketState.Open
。
问题是这是否是关闭连接的最合适方法 - 使用CloseAsync
forWebSocketState.Open
和Abort
for WebSocketState.Connecting
?