diff --git a/src/Transports.AspNetCore/WebSockets/WebSocketConnection.cs b/src/Transports.AspNetCore/WebSockets/WebSocketConnection.cs index adad414e..268a9ac2 100644 --- a/src/Transports.AspNetCore/WebSockets/WebSocketConnection.cs +++ b/src/Transports.AspNetCore/WebSockets/WebSocketConnection.cs @@ -276,7 +276,7 @@ protected virtual Task OnDispatchMessageAsync(IOperationMessageProcessor operati protected virtual async Task OnSendMessageAsync(OperationMessage message) { await _serializer.WriteAsync(_stream, message, RequestAborted); - await _stream.FlushAsync(RequestAborted); + await _stream.SendEndOfMessageAsync(RequestAborted); } /// diff --git a/src/Transports.AspNetCore/WebSockets/WebSocketWriterStream.cs b/src/Transports.AspNetCore/WebSockets/WebSocketWriterStream.cs index cc606059..57ca5181 100644 --- a/src/Transports.AspNetCore/WebSockets/WebSocketWriterStream.cs +++ b/src/Transports.AspNetCore/WebSockets/WebSocketWriterStream.cs @@ -19,10 +19,12 @@ public override ValueTask WriteAsync(ReadOnlyMemory buffer, CancellationTo public override void Write(byte[] buffer, int offset, int count) => WriteAsync(buffer, offset, count).GetAwaiter().GetResult(); - public override Task FlushAsync(CancellationToken cancellationToken) - => _webSocket.SendAsync(new ArraySegment(Array.Empty()), WebSocketMessageType.Text, true, cancellationToken); + public override Task FlushAsync(CancellationToken cancellationToken) => Task.CompletedTask; + + public override void Flush() { } - public override void Flush() => FlushAsync().GetAwaiter().GetResult(); + public Task SendEndOfMessageAsync(CancellationToken cancellationToken) + => _webSocket.SendAsync(new ArraySegment(Array.Empty()), WebSocketMessageType.Text, true, cancellationToken); public override int Read(byte[] buffer, int offset, int count) => throw new NotSupportedException(); diff --git a/tests/Transports.AspNetCore.Tests/WebSockets/WebSocketWriterStreamTests.cs b/tests/Transports.AspNetCore.Tests/WebSockets/WebSocketWriterStreamTests.cs index 41210c8f..c8de3dde 100644 --- a/tests/Transports.AspNetCore.Tests/WebSockets/WebSocketWriterStreamTests.cs +++ b/tests/Transports.AspNetCore.Tests/WebSockets/WebSocketWriterStreamTests.cs @@ -57,10 +57,18 @@ public void Write() } [Fact] - public async Task FlushAsync() + public async Task SendEndOfMessageAsync() { _mockWebSocket.Setup(x => x.SendAsync(new ArraySegment(Array.Empty(), 0, 0), WebSocketMessageType.Text, true, default)) .Returns(Task.CompletedTask).Verifiable(); + await _stream.SendEndOfMessageAsync(default); + _mockWebSocket.Verify(); + _mockWebSocket.VerifyNoOtherCalls(); + } + + [Fact] + public async Task FlushAsync() + { await _stream.FlushAsync(); _mockWebSocket.Verify(); _mockWebSocket.VerifyNoOtherCalls(); @@ -69,8 +77,6 @@ public async Task FlushAsync() [Fact] public void Flush() { - _mockWebSocket.Setup(x => x.SendAsync(new ArraySegment(Array.Empty(), 0, 0), WebSocketMessageType.Text, true, default)) - .Returns(Task.CompletedTask).Verifiable(); _stream.Flush(); _mockWebSocket.Verify(); _mockWebSocket.VerifyNoOtherCalls();