Как вызвать закрытие ClientWebSocketC#

Место общения программистов C#
Ответить
Anonymous
 Как вызвать закрытие ClientWebSocket

Сообщение Anonymous »

По сути, я хочу сработать, когда смогу закрыть этот ClientWebSocket при выполнении этого кода

Код: Выделить всё

 static void Main(string[] args)
{
Thread.Sleep(1000);
Connect("ws://endpointfrompublicurl").Wait();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}

public static async Task Connect(string uri, ClientWebSocket webSocket)
{
try
{
webSocket = new ClientWebSocket();
await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
await Task.WhenAll(Receive(webSocket), Send(webSocket));
}
catch (Exception ex)
{
Console.WriteLine("Exception: {0}", ex);
}
finally
{
if (webSocket != null)
webSocket.Dispose();
Console.WriteLine();

lock (consoleLock)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("WebSocket closed.");
Console.ResetColor();
}
}
}

private static async Task Receive(ClientWebSocket webSocket)
{
byte[] buffer = new byte[receiveChunkSize];
while (webSocket.State == WebSocketState.Open)
{
var result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
}
else
{
LogStatus(true, buffer, result.Count);
}
}
}
Есть ли лучшая практика или, возможно, другой подход для возможности закрытия текущего открытого соединения в веб-сокете

Подробнее здесь: https://stackoverflow.com/questions/435 ... cket-close
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»