public static async Task SendMessageAsync( this IWebSocketContext context, OperationMessage message, CancellationToken cancellationToken) { using (Stream messageStream = message.CreateMessageStream()) { await context.SendMessageAsync( messageStream, cancellationToken); } }
public static async Task SendMessageAsync( this WebSocket webSocket, OperationMessage message, bool largeMessage = false) { var buffer = new byte[_maxMessageSize]; await using Stream stream = message.CreateMessageStream(largeMessage); int read; do { read = stream.Read(buffer, 0, buffer.Length); var segment = new ArraySegment <byte>(buffer, 0, read); var isEndOfMessage = stream.Position == stream.Length; await webSocket.SendAsync( segment, WebSocketMessageType.Text, isEndOfMessage, CancellationToken.None); } while (read == _maxMessageSize); }
public static async Task SendMessageAsync( this IWebSocketContext context, OperationMessage message, CancellationToken cancellationToken) { var buffer = new byte[_maxMessageSize]; using (Stream stream = message.CreateMessageStream()) { int read = 0; do { read = stream.Read(buffer, 0, buffer.Length); var segment = new ArraySegment <byte>(buffer, 0, read); bool isEndOfMessage = stream.Position == stream.Length; await context.WebSocket.SendAsync( segment, WebSocketMessageType.Text, isEndOfMessage, cancellationToken); } while (read == _maxMessageSize); } }