using System.Net.WebSockets; using System.Text; namespace Shogi.Api.Extensions { public static class WebSocketExtensions { public static async Task SendTextAsync(this WebSocket self, string message) { await self.SendAsync(Encoding.UTF8.GetBytes(message), WebSocketMessageType.Text, true, CancellationToken.None); } public static async Task ReceiveTextAsync(this WebSocket self) { var buffer = new ArraySegment(new byte[2048]); var receive = await self.ReceiveAsync(buffer, CancellationToken.None); return Encoding.UTF8.GetString(buffer.Slice(0, receive.Count)); // TODO: Make this robust to multi-frame messages. } } }