Beispiel #1
0
 public RpcOverHttpDaynamicProxy(RpcDynamicProxyFactory factory, Type interfaceType, string token)
 {
     this.token         = token;
     this.factory       = factory;
     this.version       = typeof(RpcResponse).Assembly.GetName().Version;
     this.interfaceType = interfaceType;
 }
Beispiel #2
0
        /// <summary>
        /// HTTP ONLY
        /// </summary>
        /// <param name="url"></param>
        public static RpcClient Initialize(Uri url, string cerFilePath = null, WebProxy proxy = null)
        {
            var iocContainer = new TinyIoC.TinyIoCContainer();

            iocContainer.Register <IWsDataSerializer, ProtoBufRpcDataSerializer>(new ProtoBufRpcDataSerializer(), "default");
            iocContainer.Register <IRpcDataSerializer, HttpMultipartSerializer>(new HttpMultipartSerializer(), "default");
            iocContainer.Register <IRpcHeadSerializer, JsonRpcHeadSerializer>(new JsonRpcHeadSerializer(), "default");

            var _proxyFactory   = new RpcDynamicProxyFactory(url, proxy, iocContainer);
            var websocketServer = "";
            var client          = new RpcClient(_proxyFactory, proxy, iocContainer);

            if (!string.IsNullOrEmpty(cerFilePath))
            {
                if (!System.IO.File.Exists(cerFilePath))
                {
                    throw new Exception("the cer file you provided is not exists. " + Path.GetFileName(cerFilePath));
                }
                client.AddCertForHttps(cerFilePath);
            }
            if (url.Scheme == ("https"))
            {
                websocketServer = url.AbsoluteUri.Replace("https://", "wss://");
                if (!Certs.Any())
                {
                    throw new Exception("you should provide a cert when using https.");
                }
            }
            else
            {
                websocketServer = url.AbsoluteUri.Replace("http://", "ws://");
            }
            var cb = new RemoteCertificateValidationCallback(client.RemoteCertificateValidationCallback);

            _proxyFactory.ServerCertificateValidationCallback = cb;
            _proxyFactory.websocketServer = websocketServer;
            return(client);
        }
Beispiel #3
0
 internal RpcClient(RpcDynamicProxyFactory _proxyFactory, WebProxy proxy, TinyIoC.TinyIoCContainer iocContainer) : base(iocContainer)
 {
     this._proxyFactory = _proxyFactory;
     this._webProxy     = proxy;
     this.iocContainer  = iocContainer;
 }