Esempio n. 1
0
 public TcpClientChannel(IChannelParameters channelparamaters)
 {
     _channelParameters = channelparamaters;
     _serverEndPoint    = new IPEndPoint(IPAddress.Parse(_channelParameters.IP), _channelParameters.Port);
     RemoteHost         = _channelParameters.IP;
     RemotePort         = _channelParameters.Port;
     LocalHost          = "";
     EOL  = "\r";
     EOLB = System.Text.Encoding.ASCII.GetBytes("\r");
 }
Esempio n. 2
0
        public WebSocketDaemonSB(IChannelParameters channelparameters, string serviceName = "/gain")
        {
            _channelParameters = channelparameters;
            _service           = serviceName;
            _logger            = LogManager.GetLogger(typeof(WebSocketDaemonSB));
            string webRoot = "";

            if (string.IsNullOrEmpty(webRoot) || !Directory.Exists(webRoot))
            {
                string baseFolder = AppDomain.CurrentDomain.BaseDirectory;
                _logger.WarnFormat("Webroot folder {0} not found. Using application base directory: {1}", webRoot, baseFolder);
                webRoot = baseFolder;
            }
            _serviceFactory = new ServiceFactoryDefault(webRoot, _logger);
        }
Esempio n. 3
0
        public virtual void OpenBlocking(Uri uri)
        {
            try
            {
                var isOpen = false;
                lock (connectSync)
                {
                    isOpen = _isOpen;
                }
                if (isOpen)
                {
                    return;
                }


                string host = uri.Host;
                int    port = uri.Port;
                _tcpClient         = new TcpClient();
                _tcpClient.NoDelay = _noDelay;
                bool useSsl = uri.Scheme.ToLower() == "wss";

                IPAddress ipAddress;
                if (IPAddress.TryParse(host, out ipAddress))
                {
                    _tcpClient.Connect(ipAddress, port);
                }
                else
                {
                    _tcpClient.Connect(host, port);
                }

                if (_channelParameters == null)
                {
                    _channelParameters = new ChannelParameters(port, host);
                }

                _stream = GetStream(_tcpClient, useSsl, host);
                _uri    = uri;

                //

                _socket = _tcpClient.Client;
                _writer = new WebSocketFrameWriter(_stream);

                PerformHandshake(_stream);
                lock (connectSync)
                {
                    _isOpen = true;
                }

                if (_socket.Connected)
                {
                    if (_channelParameters.TimeOut > 0)
                    {
                        _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, _channelParameters.TimeOut);
                        _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, _channelParameters.TimeOut);
                    }

                    _socketHandler               = new SocketHandler(_socket, _channelParameters.BufferSize);
                    _socketHandler.Received     += sh_received;
                    _socketHandler.Disconnected += sh_disconnected;
                    _socketHandler.ConnectionId  = ConnectionId;
                    _frameBuilder.ConnectionId   = ConnectionId;
                    _socketHandler.Start();

                    OnConnectionOpened();
                }
                else
                {
                    lock (connectSync)
                    {
                        _isOpen = false;
                    }
                    if (OnError != null)
                    {
                        OnError(this, new ErrorEventArgs(-1, "Cannot connect to remote host."));
                    }
                }
            }
            catch (SocketException se)
            {
                if (OnError != null)
                {
                    OnError(this, new ErrorEventArgs(se.ErrorCode, se.Message));
                }
            }
            catch (Exception e)
            {
                if (OnError != null)
                {
                    OnError(this, new ErrorEventArgs(-1, e.Message));
                }
            }
        }
Esempio n. 4
0
 public WebSocketClient(IChannelParameters channelParameters, bool noDelay, ILog logger) : this(noDelay, logger)
 {
     _channelParameters = channelParameters;
 }
Esempio n. 5
0
 public IPDaemon(IChannelParameters channelparameters)
 {
     _channelParameters = channelparameters;
 }
Esempio n. 6
0
 public WebSocketDaemonSB(IChannelParameters channelparameters, X509Certificate2 sslCertificate, string serviceName = "/gain") : this(channelparameters, serviceName)
 {
     _sslCertificate = sslCertificate;
 }