diff --git a/root.props b/root.props
index 0307b880..2c0a5b7d 100644
--- a/root.props
+++ b/root.props
@@ -8,7 +8,7 @@
True
8.0
en-US
- CS0618;CS1591;CS1701;CS8618;NU5048;NU5105;NU5125
+ CS0618;CS1591;CS1701;CS8618;CS8632;NU5048;NU5105;NU5125
annotations
icon.png
LICENSE.txt
diff --git a/src/GraphQL.Client.Http/GraphQL.Client.Http.csproj b/src/GraphQL.Client.Http/GraphQL.Client.Http.csproj
index 5d72a44c..fcac32b3 100644
--- a/src/GraphQL.Client.Http/GraphQL.Client.Http.csproj
+++ b/src/GraphQL.Client.Http/GraphQL.Client.Http.csproj
@@ -3,19 +3,32 @@
- netstandard2.0
+ netstandard2.0;netcoreapp3.1;net461
+
+ NETSTANDARD
+
+
+
+ NETFRAMEWORK
+
+
+
-
-
-
+
+
+
+
+
+
+
diff --git a/src/GraphQL.Client.Http/GraphQLHttpClientOptions.cs b/src/GraphQL.Client.Http/GraphQLHttpClientOptions.cs
index 146ff3f4..d1c139f4 100644
--- a/src/GraphQL.Client.Http/GraphQLHttpClientOptions.cs
+++ b/src/GraphQL.Client.Http/GraphQLHttpClientOptions.cs
@@ -52,5 +52,6 @@ public class GraphQLHttpClientOptions {
/// Request preprocessing function. Can be used i.e. to inject authorization info into a GraphQL request payload.
///
public Func> PreprocessRequest { get; set; } = (request, client) => Task.FromResult(request);
+
}
}
diff --git a/src/GraphQL.Client.Http/Websocket/GraphQLHttpWebSocket.cs b/src/GraphQL.Client.Http/Websocket/GraphQLHttpWebSocket.cs
index 7098a8e5..1546092b 100644
--- a/src/GraphQL.Client.Http/Websocket/GraphQLHttpWebSocket.cs
+++ b/src/GraphQL.Client.Http/Websocket/GraphQLHttpWebSocket.cs
@@ -24,7 +24,11 @@ internal class GraphQLHttpWebSocket : IDisposable {
public WebSocketState WebSocketState => clientWebSocket?.State ?? WebSocketState.None;
+#if NETFRAMEWORK
private WebSocket clientWebSocket = null;
+#else
+ private ClientWebSocket clientWebSocket = null;
+#endif
private int _connectionAttempt = 0;
public GraphQLHttpWebSocket(Uri webSocketUri, GraphQLHttpClientOptions options) {
@@ -71,7 +75,7 @@ await this.clientWebSocket.SendAsync(
private readonly object _initializeLock = new object();
- #region Private Methods
+#region Private Methods
private Task _backOff() {
_connectionAttempt++;
@@ -103,6 +107,7 @@ public Task InitializeWebSocket() {
//_responseStreamConnection?.Dispose();
clientWebSocket?.Dispose();
+#if NETFRAMEWORK
// fix websocket not supported on win 7 using
// https://github.com/PingmanTools/System.Net.WebSockets.Client.Managed
clientWebSocket = SystemClientWebSocket.CreateClientWebSocket();
@@ -120,7 +125,12 @@ public Task InitializeWebSocket() {
default:
throw new NotSupportedException($"unknown websocket type {clientWebSocket.GetType().Name}");
}
-
+#else
+ clientWebSocket = new ClientWebSocket();
+ clientWebSocket.Options.AddSubProtocol("graphql-ws");
+ clientWebSocket.Options.ClientCertificates = ((HttpClientHandler)_options.HttpMessageHandler).ClientCertificates;
+ clientWebSocket.Options.UseDefaultCredentials = ((HttpClientHandler)_options.HttpMessageHandler).UseDefaultCredentials;
+#endif
return InitializeWebSocketTask = _connectAsync(_cancellationTokenSource.Token);
}
}
@@ -247,9 +257,9 @@ private async Task _closeAsync(CancellationToken cancellationToken = default) {
await this.clientWebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", cancellationToken).ConfigureAwait(false);
}
- #endregion
+#endregion
- #region IDisposable
+#region IDisposable
private Task _disposed;
private object _disposedLocker = new object();
@@ -269,6 +279,6 @@ private async Task DisposeAsync() {
_cancellationTokenSource.Dispose();
Debug.WriteLine($"websocket {clientWebSocket.GetHashCode()} disposed");
}
- #endregion
+#endregion
}
}
diff --git a/src/GraphQL.Client/GraphQL.Client.csproj b/src/GraphQL.Client/GraphQL.Client.csproj
index bc004365..78633fd1 100644
--- a/src/GraphQL.Client/GraphQL.Client.csproj
+++ b/src/GraphQL.Client/GraphQL.Client.csproj
@@ -12,8 +12,6 @@
-
-