private async ValueTask <FlushResult> WriteNextMessageAsync(CancellationToken cancellationToken = default) { ValueWebSocketReceiveResult readResult = default; while (!readResult.EndOfMessage) { var memory = ReceiverWriter.GetMemory(); readResult = await _websocketClient.ReceiveAsync(memory, cancellationToken); ReceiverWriter.Advance(readResult.Count); } return(await ReceiverWriter.FlushAsync(cancellationToken)); }
private async Task StartReceiverWriterAsync() { FlushResult flushResult = default; try { while (!flushResult.IsCompleted && !GeneralToken.IsCancellationRequested) { GeneralToken.ThrowIfCancellationRequested(); flushResult = await WriteNextMessageAsync(GeneralToken); } } finally { await ReceiverWriter.CompleteAsync(); } }