-
Notifications
You must be signed in to change notification settings - Fork 135
Closed
Description
This issue relates to #260
Actually the GraphQLRequest
are processed parallel and not as you want in serial.
The Issue seems to be in https://github.com/graphql-dotnet/graphql-client/blob/master/src/GraphQL.Client/Websocket/GraphQLHttpWebSocket.cs#L81
_requestSubscription = _requestSubject.Select(SendWebSocketRequestAsync).Concat().Subscribe();
changing back to https://github.com/haprotec/graphql-client/blob/subscriptions-api/src/GraphQL.Client/Http/GraphQLHttpWebSocket.cs#L42 should fix this problem.
_requestSubscription = _requestSubject.Select(request => Observable.FromAsync(() => _sendWebSocketRequest(request))).Concat().Subscribe();
Old version
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("started");
var subject = new Subject<int>();
var subscription = subject.Select(i => Observable.FromAsync(() => FooAsync(i))).Concat().Subscribe();
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"add item nr. {i}");
subject.OnNext(i);
}
Console.WriteLine("all items added");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
public static async Task<int> FooAsync(int i)
{
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: item {i} elapsed");
return i;
}
}
started
add item nr. 0
add item nr. 1
add item nr. 2
add item nr. 3
add item nr. 4
add item nr. 5
add item nr. 6
add item nr. 7
add item nr. 8
add item nr. 9
all items added
Press any key to exit.
08:49:19: item 0 elapsed
08:49:20: item 1 elapsed
08:49:21: item 2 elapsed
08:49:22: item 3 elapsed
08:49:23: item 4 elapsed
08:49:24: item 5 elapsed
08:49:25: item 6 elapsed
08:49:26: item 7 elapsed
08:49:27: item 8 elapsed
08:49:28: item 9 elapsed
New version
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("started");
var subject = new Subject<int>();
var subscription = subject.Select(FooAsync).Concat().Subscribe();
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"add item nr. {i}");
subject.OnNext(i);
}
Console.WriteLine("all items added");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
public static async Task<int> FooAsync(int i)
{
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: item {i} elapsed");
return i;
}
}
started
add item nr. 0
add item nr. 1
add item nr. 2
add item nr. 3
add item nr. 4
add item nr. 5
add item nr. 6
add item nr. 7
add item nr. 8
add item nr. 9
all items added
Press any key to exit.
08:50:08: item 0 elapsed
08:50:08: item 1 elapsed
08:50:08: item 2 elapsed
08:50:08: item 3 elapsed
08:50:08: item 5 elapsed
08:50:08: item 6 elapsed
08:50:08: item 7 elapsed
08:50:08: item 4 elapsed
08:50:08: item 9 elapsed
08:50:08: item 8 elapsed
Metadata
Metadata
Assignees
Labels
No labels