public static PureEngineIoOptions FromURI(Uri uri, PureEngineIoOptions opts)
        {
            if (opts == null)
            {
                opts = new PureEngineIoOptions();
            }

            opts.Host   = uri.Host;
            opts.Secure = uri.Scheme == "https" || uri.Scheme == "wss";
            opts.Port   = uri.Port;

            if (!string.IsNullOrEmpty(uri.Query))
            {
                opts.QueryString = uri.Query;
            }

            return(opts);
        }
        public PureEngineIoSocket(PureEngineIoOptions options)
        {
            Debug = options.DebugMode;

            if (options.Host != null)
            {
                var pieces = options.Host.Split(':');
                options.Hostname = pieces[0];
                if (pieces.Length > 1)
                {
                    options.Port = int.Parse(pieces[pieces.Length - 1]);
                }
            }

            Secure   = options.Secure;
            Hostname = options.Hostname;
            Port     = options.Port;
            Query    = options.QueryString != null?Helpers.DecodeQuerystring(options.QueryString) : new Dictionary <string, string>();

            if (options.Query != null)
            {
                foreach (var item in options.Query)
                {
                    Query.Add(item.Key, item.Value);
                }
            }

            Upgrade           = options.Upgrade;
            Path              = (options.Path ?? "/engine.io").Replace("/$", "") + "/";
            TimestampParam    = (options.TimestampParam ?? "t");
            TimestampRequests = options.TimestampRequests;
            Transports        = options.Transports ?? ImmutableList <string> .Empty.Add(Polling.NAME).Add(WebSocket.NAME);

            PolicyPort      = options.PolicyPort != 0 ? options.PolicyPort : 843;
            RememberUpgrade = options.RememberUpgrade;
            Cookies         = options.Cookies;
            //if (options.IgnoreServerCertificateValidation)
            //{
            //    ServerCertificate.IgnoreServerCertificateValidation();
            //}
            ExtraHeaders = options.ExtraHeaders;
        }
 public PureEngineIoSocket(Uri uri, PureEngineIoOptions options) : this(uri == null ? options : PureEngineIoOptions.FromURI(uri, options))
 {
 }
 public PureEngineIoSocket(string uri, PureEngineIoOptions options) : this(uri == null ? null : String2Uri(uri), options)
 {
 }