diff --git a/src/GraphQL.AspNetCore3/WebSockets/WebSocketConnection.cs b/src/GraphQL.AspNetCore3/WebSockets/WebSocketConnection.cs index 92235c0..462870d 100644 --- a/src/GraphQL.AspNetCore3/WebSockets/WebSocketConnection.cs +++ b/src/GraphQL.AspNetCore3/WebSockets/WebSocketConnection.cs @@ -221,7 +221,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/GraphQL.AspNetCore3/WebSockets/WebSocketWriterStream.cs b/src/GraphQL.AspNetCore3/WebSockets/WebSocketWriterStream.cs index d54ae2e..48915e4 100644 --- a/src/GraphQL.AspNetCore3/WebSockets/WebSocketWriterStream.cs +++ b/src/GraphQL.AspNetCore3/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/src/Tests/WebSockets/WebSocketWriterStreamTests.cs b/src/Tests/WebSockets/WebSocketWriterStreamTests.cs index d6475f6..c0468c6 100644 --- a/src/Tests/WebSockets/WebSocketWriterStreamTests.cs +++ b/src/Tests/WebSockets/WebSocketWriterStreamTests.cs @@ -51,10 +51,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(); @@ -63,8 +71,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();