Skip to content

Commit b6c1f85

Browse files
authoredAug 31, 2021
Back-port of #4143 for use in 11 (#4144)
1 parent 4c85246 commit b6c1f85

File tree

1 file changed

+22
-36
lines changed

1 file changed

+22
-36
lines changed
 

‎src/HotChocolate/AspNetCore/src/AspNetCore/Subscriptions/WebSocketConnection.cs

+22-36
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace HotChocolate.AspNetCore.Subscriptions
1111
public class WebSocketConnection : ISocketConnection
1212
{
1313
private const string _protocol = "graphql-ws";
14-
private const int _maxMessageSize = 1024 * 4;
14+
private const int _maxMessageSize = 512;
1515
private WebSocket? _webSocket;
1616
private bool _disposed;
1717

@@ -87,49 +87,35 @@ public async Task ReceiveAsync(
8787

8888
try
8989
{
90-
WebSocketReceiveResult? socketResult = null;
90+
ValueWebSocketReceiveResult socketResult;
9191
do
9292
{
93+
if (webSocket.State != WebSocketState.Open)
94+
{
95+
break;
96+
}
97+
9398
Memory<byte> memory = writer.GetMemory(_maxMessageSize);
94-
var success = MemoryMarshal.TryGetArray(memory, out ArraySegment<byte> buffer);
99+
socketResult = await webSocket.ReceiveAsync(memory, cancellationToken);
95100

96-
if (success)
101+
if (socketResult.Count == 0)
97102
{
98-
if (webSocket.State != WebSocketState.Open)
99-
{
100-
break;
101-
}
102-
103-
try
104-
{
105-
socketResult = await webSocket.ReceiveAsync(buffer, cancellationToken);
106-
if (socketResult.Count == 0)
107-
{
108-
break;
109-
}
110-
111-
writer.Advance(socketResult.Count);
112-
}
113-
catch
114-
{
115-
break;
116-
}
117-
118-
FlushResult result = await writer.FlushAsync(cancellationToken);
119-
if (result.IsCompleted)
120-
{
121-
break;
122-
}
103+
break;
123104
}
124-
} while (socketResult == null || !socketResult.EndOfMessage);
125-
}
126-
catch (ObjectDisposedException)
127-
{
128-
// we will just stop receiving
105+
106+
writer.Advance(socketResult.Count);
107+
108+
FlushResult result = await writer.FlushAsync(cancellationToken);
109+
110+
if (result.IsCompleted)
111+
{
112+
break;
113+
}
114+
} while (!socketResult.EndOfMessage);
129115
}
130-
catch (WebSocketException)
116+
catch
131117
{
132-
// we will just stop receiving
118+
// swallow exception, there's nothing we can reasonably do
133119
}
134120
}
135121

0 commit comments

Comments
 (0)
Please sign in to comment.