public AsyncWebSocketClient(Uri uri, IAsyncWebSocketClientMessageDispatcher dispatcher, AsyncWebSocketClientConfiguration configuration = null) { if (uri == null) throw new ArgumentNullException("uri"); if (dispatcher == null) throw new ArgumentNullException("dispatcher"); if (!Consts.WebSocketSchemes.Contains(uri.Scheme.ToLowerInvariant())) throw new NotSupportedException( string.Format("Not support the specified scheme [{0}].", uri.Scheme)); _uri = uri; var host = _uri.Host; var port = _uri.Port > 0 ? _uri.Port : uri.Scheme.ToLowerInvariant() == "wss" ? 443 : 80; IPAddress ipAddress; if (IPAddress.TryParse(host, out ipAddress)) { _remoteEndPoint = new IPEndPoint(ipAddress, port); } else { if (host.ToLowerInvariant() == "localhost") { _remoteEndPoint = new IPEndPoint(IPAddress.Parse(@"127.0.0.1"), port); } else { IPAddress[] addresses = Dns.GetHostAddresses(host); if (addresses.Any()) { _remoteEndPoint = new IPEndPoint(addresses.First(), port); } else { throw new InvalidOperationException( string.Format("Cannot resolve host [{0}] by DNS.", host)); } } } _dispatcher = dispatcher; _configuration = configuration ?? new AsyncWebSocketClientConfiguration(); _sslEnabled = uri.Scheme.ToLowerInvariant() == "wss"; Initialize(); }
public AsyncWebSocketClient(Uri uri, IAsyncWebSocketClientMessageDispatcher dispatcher, AsyncWebSocketClientConfiguration configuration = null) { if (uri == null) throw new ArgumentNullException("uri"); if (dispatcher == null) throw new ArgumentNullException("dispatcher"); if (!Consts.WebSocketSchemes.Contains(uri.Scheme.ToLowerInvariant())) throw new NotSupportedException( string.Format("Not support the specified scheme [{0}].", uri.Scheme)); _uri = uri; _remoteEndPoint = ResolveRemoteEndPoint(_uri); _dispatcher = dispatcher; _configuration = configuration ?? new AsyncWebSocketClientConfiguration(); _sslEnabled = uri.Scheme.ToLowerInvariant() == "wss"; Initialize(); }