Пример #1
0
        private void PerformConnect(string url)
        {
            if (_websocket != null)
            {
                DisposeWebSocket();
            }

            _webSocketTokenSource = new CancellationTokenSource();
            _webSocketTokenSource.Token.Register(WebSocketTokenSourceCanceled);
            CancellationTokenSource.CreateLinkedTokenSource(_webSocketTokenSource.Token, _disconnectToken);

            // SignalR uses https, websocket4net uses wss
            url = url.Replace("http://", "ws://").Replace("https://", "wss://");

            IDictionary <string, string> cookies = new Dictionary <string, string>();

            if (_connection.CookieContainer != null)
            {
                var container = _connection.CookieContainer.GetCookies(new Uri(_connection.Url));
                foreach (Cookie cookie in container)
                {
                    cookies.Add(cookie.Name, cookie.Value);
                }
            }

            // Add the header from the connection to the socket connection
            var headers = _connection.Headers.ToList();

//            _websocket = new WebsocketNative(url, _connection.CookieContainer.GetCookieHeader(new Uri(url)), BittrexSocketClient.GetUserAgentString());

#if !NETSTANDARD
            _websocket = new WebsocketSharp(url, _connection.CookieContainer.GetCookieHeader(new Uri(url)), BittrexSocketClient.GetUserAgentString());
#else
            _websocket = new Websocket4Net(url, cookies, _connection.Headers);
#endif

            _websocket.OnError   += WebSocketOnError;
            _websocket.OnOpen    += WebSocketOnOpened;
            _websocket.OnClose   += WebSocketOnClosed;
            _websocket.OnMessage += WebSocketOnMessageReceived;

            _websocket.setProxy(_connection.Proxy);

            _websocket.Open();
        }