public override void Start() { var host = new WebHostBuilder() .UseKestrel() .UseIISIntegration() .UseUrls($"http://{_options.Listen.Address}:{_options.Listen.Port}") .ConfigureServices(services => { services.AddSingleton <IWebSocketHandler>(_socketHandler); }) .UseStartup <Startup>() .Build(); host.Start(); this._resources.Add(host); _options.EndPoints.ForEach(async endPoint => { var ws = new ClientWebSocket(); ws.Options.KeepAliveInterval = TimeSpan.FromSeconds(20); await ws.ConnectAsync(new Uri($"ws://{endPoint.Address}:{endPoint.Port}"), CancellationToken.None); _connectionManager.AddSocket(ws); await _socketHandler.OnStart(ws); await ws.ReceiveAsync(_socketHandler); }); }