示例#1
0
        private WebSocketClient(IWebSocketOptions options)
        {
            _connected       = new AsyncEvent(EventErrorHandler, "WS_CONNECT");
            _disconnected    = new AsyncEvent <WebSocketCloseEventArgs>(EventErrorHandler, "WS_DISCONNECT");
            _messageReceived = new AsyncEvent <WebSocketMessageEventArgs>(EventErrorHandler, "WS_MESSAGE");
            _errored         = new AsyncEvent <WebSocketErrorEventArgs>(EventErrorHandler, "WS_ERROR");

            Options         = options;
            ClientWebSocket = new ClientWebSocket
            {
                Options =
                {
                    KeepAliveInterval = TimeSpan.Zero
                }
            };

            if (options.WebProxy != null)
            {
                ClientWebSocket.Options.Proxy = options.WebProxy;
            }

            if (options.Headers.Any())
            {
                foreach (var(k, v) in options.Headers)
                {
                    ClientWebSocket.Options.SetRequestHeader(k, v);
                }
            }

            SocketTokenSource   = null;
            SocketToken         = CancellationToken.None;
            ReceiverTokenSource = null;
            ReceiverToken       = CancellationToken.None;
            Locker = new SemaphoreSlim(1);
        }
        public ProxyHelper(IWebSocketOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options", "Parameter cannot be null");
            }

            if (options.UseDefaultProxy)
            {
                return;
            }

            IsBypassed   = false;
            ProxyAddress = options.ProxyAddress;
            UserName     = options.UserName;
            Password     = options.Password;
        }
示例#3
0
        /// <summary>
        /// Creates a new instance of WebSocketClient.
        /// </summary>
        /// <param name="uri">The Uri this WebSocketClient should connect to.</param>
        /// <param name="options">Options of this WebSocketClient.</param>
        public WebSocketClient(Uri uri, IWebSocketOptions options = null)
        {
            Uri        = uri;
            SendAction = new ActionBlock <WebSocketMessage>(_send);
            ReadThread = new Thread(_read);

            if (options == null)
            {
                return;
            }
            if (options.Headers != null)
            {
                foreach (var(item1, item2) in options.Headers)
                {
                    ClientWebSocket.Options.SetRequestHeader(item1, item2);
                }
            }
            if (options.Proxy != null)
            {
                ClientWebSocket.Options.Proxy = options.Proxy;
            }
        }
示例#4
0
 public static WebSocketClient CreateNew(IWebSocketOptions options)
 {
     return(new WebSocketClient(options));
 }