Skip to content

Conversation

@kenjiuno
Copy link

@kenjiuno kenjiuno commented Sep 11, 2019

@kenjiuno
Copy link
Author

Better implementation so that it can find proxy server automatically:

    pusher = new Pusher(applicationKey, new PusherOptions()
    {
        Authorizer = ...,
        Encrypted = true,
        ProxyFactory = (uri) =>
        {
            var proxyUri = UseProxy
                ? ProxyDetector.Detect(uri)
                : null;
            var proxy = (proxyUri != null)
                ? new HttpConnectProxy(new DnsEndPoint(proxyUri.Host, proxyUri.Port))
                : null;

            return proxy;
        },
    });
    static class ProxyDetector
    {
        public static Uri Detect(string uri)
        {
            UriBuilder urib = new UriBuilder(uri);
            switch (urib.Scheme)
            {
                case "ws":
                    urib.Port = 80;
                    urib.Scheme = "http";
                    break;
                case "wss":
                    urib.Port = 443;
                    urib.Scheme = "https";
                    break;
            }

            Uri uriTarget = urib.Uri;
            Uri uriProxy = System.Net.HttpWebRequest.DefaultWebProxy.GetProxy(uriTarget);
            if (uriProxy != null && uriProxy != uriTarget)
            {
                return uriProxy;
            }
            return null;
        }
    }

@kenjiuno kenjiuno closed this Jan 16, 2020
@kenjiuno kenjiuno deleted the fix-11 branch January 16, 2020 05:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proxy support

1 participant