@@ -64,8 +64,8 @@ public GraphQLHttpClient(GraphQLHttpClientOptions options, IGraphQLWebsocketJson
6464
6565 if ( ! HttpClient . DefaultRequestHeaders . UserAgent . Any ( ) )
6666 HttpClient . DefaultRequestHeaders . UserAgent . Add ( new ProductInfoHeaderValue ( GetType ( ) . Assembly . GetName ( ) . Name , GetType ( ) . Assembly . GetName ( ) . Version . ToString ( ) ) ) ;
67-
68- _lazyHttpWebSocket = new Lazy < GraphQLHttpWebSocket > ( ( ) => new GraphQLHttpWebSocket ( Options . EndPoint . GetWebSocketUri ( ) , this ) ) ;
67+
68+ _lazyHttpWebSocket = new Lazy < GraphQLHttpWebSocket > ( CreateGraphQLHttpWebSocket ) ;
6969 }
7070
7171 #endregion
@@ -75,7 +75,9 @@ public GraphQLHttpClient(GraphQLHttpClientOptions options, IGraphQLWebsocketJson
7575 /// <inheritdoc />
7676 public async Task < GraphQLResponse < TResponse > > SendQueryAsync < TResponse > ( GraphQLRequest request , CancellationToken cancellationToken = default )
7777 {
78- if ( Options . UseWebSocketForQueriesAndMutations || Options . EndPoint . HasWebSocketScheme ( ) )
78+ if ( Options . UseWebSocketForQueriesAndMutations ||
79+ ! ( Options . WebSocketEndPoint is null ) && Options . EndPoint is null ||
80+ Options . EndPoint . HasWebSocketScheme ( ) )
7981 return await _graphQlHttpWebSocket . SendRequest < TResponse > ( request , cancellationToken ) ;
8082
8183 return await SendHttpRequestAsync < TResponse > ( request , cancellationToken ) ;
@@ -152,6 +154,19 @@ private async Task<GraphQLHttpResponse<TResponse>> SendHttpRequestAsync<TRespons
152154
153155 throw new GraphQLHttpRequestException ( httpResponseMessage . StatusCode , httpResponseMessage . Headers , content ) ;
154156 }
157+
158+ private GraphQLHttpWebSocket CreateGraphQLHttpWebSocket ( )
159+ {
160+ if ( Options . WebSocketEndPoint is null && Options . EndPoint is null )
161+ throw new InvalidOperationException ( "no endpoint configured" ) ;
162+
163+ var webSocketEndpoint = Options . WebSocketEndPoint ?? Options . EndPoint . GetWebSocketUri ( ) ;
164+ if ( ! webSocketEndpoint . HasWebSocketScheme ( ) )
165+ throw new InvalidOperationException ( $ "uri \" { webSocketEndpoint } \" is not a websocket endpoint") ;
166+
167+ return new GraphQLHttpWebSocket ( webSocketEndpoint , this ) ;
168+ }
169+
155170 #endregion
156171
157172 #region IDisposable
0 commit comments