Skip to content

Commit fa8253e

Browse files
committed
use SelectMany to serialize calls to SendWebSocketRequestAsync
1 parent fb657d5 commit fa8253e

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/GraphQL.Client/Websocket/GraphQLHttpWebSocket.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.IO;
44
using System.Net.Http;
55
using System.Net.WebSockets;
6+
using System.Reactive;
67
using System.Reactive.Concurrency;
78
using System.Reactive.Disposables;
89
using System.Reactive.Linq;
@@ -84,7 +85,8 @@ public GraphQLHttpWebSocket(Uri webSocketUri, GraphQLHttpClient client)
8485

8586
_requestSubscription = _requestSubject
8687
.ObserveOn(_sendLoopScheduler)
87-
.Subscribe(async request => await SendWebSocketRequestAsync(request));
88+
.SelectMany(SendWebSocketRequestAsync)
89+
.Subscribe();
8890
}
8991

9092
#region Send requests
@@ -339,14 +341,14 @@ private Task QueueWebSocketRequest(GraphQLWebSocketRequest request)
339341
return request.SendTask();
340342
}
341343

342-
private async Task SendWebSocketRequestAsync(GraphQLWebSocketRequest request)
344+
private async Task<Unit> SendWebSocketRequestAsync(GraphQLWebSocketRequest request)
343345
{
344346
try
345347
{
346348
if (_internalCancellationToken.IsCancellationRequested)
347349
{
348350
request.SendCanceled();
349-
return;
351+
return Unit.Default;
350352
}
351353

352354
await InitializeWebSocket();
@@ -362,6 +364,7 @@ await _clientWebSocket.SendAsync(
362364
{
363365
request.SendFailed(e);
364366
}
367+
return Unit.Default;
365368
}
366369

367370
#endregion

0 commit comments

Comments
 (0)