/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/SignalR/samples/WebSocketSample/Program.cs
72 строки
2 KB
Pranav K
Enforce warnings for unused usings (#39280)
04 янв 2022, 00:26
Не верифицирован
04 янв 2022, 00:26
667f068
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Net.WebSockets; using System.Text; namespace WebSocketSample; public class Program { public static async Task<int> Main(string[] args) { if (args.Length < 1) { Console.Error.WriteLine("Usage: WebSocketSample <URL>"); Console.Error.WriteLine(""); Console.Error.WriteLine("To connect to an ASP.NET Connection Handler, use 'ws://example.com/path/to/hub' or 'wss://example.com/path/to/hub' (for HTTPS)"); return 1; } await RunWebSockets(args[0]); return 0; } private static async Task RunWebSockets(string url) { var ws = new ClientWebSocket(); await ws.ConnectAsync(new Uri(url), CancellationToken.None); Console.WriteLine("Connected"); var sending = Task.Run(async () => { string line; while ((line = Console.ReadLine()) != null) { var bytes = Encoding.UTF8.GetBytes(line); await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, endOfMessage: true, cancellationToken: CancellationToken.None); } await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); }); var receiving = Receiving(ws); await Task.WhenAll(sending, receiving); } private static async Task Receiving(ClientWebSocket ws) { var buffer = new byte[2048]; while (true) { var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); if (result.MessageType == WebSocketMessageType.Text) { Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, result.Count)); } else if (result.MessageType == WebSocketMessageType.Binary) { } else if (result.MessageType == WebSocketMessageType.Close) { await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); break; } } } }