예제 #1
0
        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);
            });
        }