/// <inheritdoc /> public async Task <GraphQLResponse <TResponse> > SendQueryAsync <TResponse>(GraphQLRequest request, CancellationToken cancellationToken = default) { if (Options.UseWebSocketForQueriesAndMutations || !(Options.WebSocketEndPoint is null) && Options.EndPoint is null || Options.EndPoint.HasWebSocketScheme()) { return(await GraphQlHttpWebSocket.SendRequest <TResponse>(request, cancellationToken)); } return(await SendHttpRequestAsync <TResponse>(request, cancellationToken)); }
/// <inheritdoc /> public IObservable <GraphQLResponse <TResponse> > CreateSubscriptionStream <TResponse>(GraphQLRequest request, Action <Exception>?exceptionHandler) { if (_disposed) { throw new ObjectDisposedException(nameof(GraphQLHttpClient)); } var observable = GraphQlHttpWebSocket.CreateSubscriptionStream <TResponse>(request, exceptionHandler); return(observable); }
/// <inheritdoc /> public IObservable <GraphQLResponse <TResponse> > CreateSubscriptionStream <TResponse>(GraphQLRequest request, Action <Exception> exceptionHandler) { if (_disposed) { throw new ObjectDisposedException(nameof(GraphQLHttpClient)); } var key = new Tuple <GraphQLRequest, Type>(request, typeof(TResponse)); if (_subscriptionStreams.ContainsKey(key)) { return((IObservable <GraphQLResponse <TResponse> >)_subscriptionStreams[key]); } var observable = GraphQlHttpWebSocket.CreateSubscriptionStream <TResponse>(request, exceptionHandler); _subscriptionStreams.TryAdd(key, observable); return(observable); }
/// <summary> /// explicitly opens the websocket connection. Will be closed again on disposing the last subscription /// </summary> /// <returns></returns> public Task InitializeWebsocketConnection() => GraphQlHttpWebSocket.InitializeWebSocket();