public void SetSecuritySettings(SecuritySettingsInfo securitySettings)
 {
     SecuritySettings = null;
     if (securitySettings.SecurityMode == SecurityMode.None)
     {
         securitySettings.Data = null;
         var result = ConnectorExtension.SendData <SecuritySettingsInfo>(this, new Shared.Models.MethodCallInfo()
         {
             Guid = Guid.NewGuid().ToString(), ServiceName = "/SetSettings", Data = JsonConvert.SerializeObject(securitySettings)
         });
     }
     else if (securitySettings.SecurityMode == SecurityMode.RSA_AESSecurity)
     {
         var keys = RSASecurity.GenerateRandomKey();
         securitySettings.Data = new RSAAESEncryptionData()
         {
             RSAEncryptionKey = keys.PublicKey
         };
         var result = ConnectorExtension.SendData <SecuritySettingsInfo>(this, new Shared.Models.MethodCallInfo()
         {
             Guid = Guid.NewGuid().ToString(), ServiceName = "/SetSettings", Data = JsonConvert.SerializeObject(securitySettings)
         });
         SecuritySettings = new SecuritySettingsInfo()
         {
             Data = new RSAAESEncryptionData()
             {
                 Key = RSASecurity.Decrypt(result.Data.Key, RSASecurity.StringToKey(keys.PrivateKey)), IV = RSASecurity.Decrypt(result.Data.IV, RSASecurity.StringToKey(keys.PrivateKey))
             }, SecurityMode = securitySettings.SecurityMode
         };
     }
 }
        public void Connect(string url, bool isWebsocket = false)
#endif
        {
            IsWebSocket = isWebsocket;
            if (!Uri.TryCreate(url, UriKind.Absolute, out Uri uri))
            {
                throw new Exception("url is not valid");
            }
            else if (uri.Port <= 0)
            {
                throw new Exception("port is not valid");
            }

#if (NETSTANDARD1_6 || NETCOREAPP1_1)
            IPHostEntry Host = await Dns.GetHostEntryAsync(uri.Host);
#else
            IPHostEntry Host = Dns.GetHostEntry(uri.Host);
#endif
            //IPHostEntry server = Dns.Resolve(uri.Host);
            base.Connect(Host.AddressList.Length == 0 ? uri.Host : Host.AddressList.FirstOrDefault().ToString(), uri.Port);
            Connect();
            ConnectToUrl(uri.AbsolutePath);
            StartToReadingClientData();
            var isConnected = ConnectorExtension.SendData <bool>(this, new Shared.Models.MethodCallInfo()
            {
                Guid = Guid.NewGuid().ToString(), ServiceName = "/CheckConnection"
            });
            Console.WriteLine("isConnected " + isConnected);
            if (!isConnected)
            {
                Dispose();
                throw new Exception("server is available but connection address is not true");
            }
        }