diff --git a/CryptoExchange.Net/ExtensionMethods.cs b/CryptoExchange.Net/ExtensionMethods.cs
index 8037ede..1108d2f 100644
--- a/CryptoExchange.Net/ExtensionMethods.cs
+++ b/CryptoExchange.Net/ExtensionMethods.cs
@@ -6,6 +6,7 @@ using System.Linq;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
+using System.Text.RegularExpressions;
using System.Web;
using CryptoExchange.Net.Logging;
using CryptoExchange.Net.Objects;
@@ -492,6 +493,22 @@ namespace CryptoExchange.Net
return ub.Uri;
}
+ ///
+ /// checks whether schema is provided
+ ///
+ ///
+ ///
+ public static bool IsSchemaProvided(this ApiProxy proxy)
+ {
+ var url = $"{proxy.Host}:{proxy.Port}";
+ var r = new Regex(@"^(?\w+)://[^/]+?(?:\d+)?",
+ RegexOptions.None, TimeSpan.FromMilliseconds(150));
+ var match = r.Match(url);
+ if (!match.Success) return false;
+ var proto = match.Result("${proto}");
+ return !string.IsNullOrEmpty(proto);
+ }
+
}
}
diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs
index dfce57c..f0229f7 100644
--- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs
+++ b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs
@@ -212,12 +212,18 @@ namespace CryptoExchange.Net.Sockets
///
public virtual void SetProxy(ApiProxy proxy)
{
-
- _socket.Options.Proxy = new WebProxy
+ if (!proxy.IsSchemaProvided())
{
- Address = new Uri($"{proxy.Host}:{proxy.Port}"),
- Credentials = proxy.Password == null ? null : new NetworkCredential(proxy.Login, proxy.Password)
- };
+ _socket.Options.Proxy = new WebProxy(proxy.Host, proxy.Port);
+ }
+ else
+ {
+ _socket.Options.Proxy = new WebProxy
+ {
+ Address = new Uri($"{proxy.Host}:{proxy.Port}"),
+ Credentials = proxy.Password == null ? null : new NetworkCredential(proxy.Login, proxy.Password)
+ };
+ }
}
///