protected override void OnStart(IConnection con, string conData, CancellationToken disconToken) { connection = con; connectionData = conData; var connectUrl = UrlBuilder.BuildConnect(connection, Name, connectionData); if (websocket != null) { DisposeWebSocket(); } // SignalR uses https, websocket4net uses wss connectUrl = connectUrl.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); } } websocket = new BaseSocket(log, connectUrl, cookies, connection.Headers); websocket.OnError += WebSocketOnError; websocket.OnClose += WebSocketOnClosed; websocket.OnMessage += WebSocketOnMessageReceived; websocket.DataInterpreterString = interpreter; if (connection.Proxy != null) { var proxy = connection.Proxy.GetProxy(new Uri(connectUrl)); websocket.SetProxy(proxy.Host, proxy.Port); } if (!websocket.Connect().Result) { TransportFailed(new Exception("Can't connect")); } }
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); } } websocket = new BaseSocket(url, cookies, connection.Headers); websocket.OnError += WebSocketOnError; websocket.OnOpen += WebSocketOnOpened; websocket.OnClose += WebSocketOnClosed; websocket.OnMessage += WebSocketOnMessageReceived; if (connection.Proxy != null) { var proxy = connection.Proxy.GetProxy(new Uri(url)); websocket.SetProxy(proxy.Host, proxy.Port); } websocket.Connect().Wait(webSocketTokenSource.Token); }