Beispiel #1
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
 /// <summary>
 /// explicitly opens the websocket connection. Will be closed again on disposing the last subscription
 /// </summary>
 /// <returns></returns>
 public Task InitializeWebsocketConnection() => GraphQlHttpWebSocket.InitializeWebSocket();