Esempio n. 1
0
        private static async Task <int> Serve(string addressString, string portString)
        {
            if (!int.TryParse(portString, out var port))
            {
                throw new ArgumentException(nameof(port));
            }

            EndPoint endPoint;

            if (IPAddress.TryParse(addressString, out var ipAddress))
            {
                endPoint = new IPEndPoint(ipAddress, port);
            }
            else
            {
                endPoint = new DnsEndPoint(addressString, port);
            }

            var builder = new HostBuilder();

            builder.AddDebugging(LogEventLevel.Verbose);
            builder.AddPeers();
            // .AddPeerListener<PeerHandler>();
            builder.AddState()
            .AddStateListener <StateHandler>()
            .UpdateClients();
            builder.ListenTo(options =>
            {
                options.LocalEndPoint = endPoint;
            });
            var host = builder.Build();

            host.OnConnected += (client) =>
            {
                host.ServiceProvider.GetRequiredService <ILogger>().Information("Client connected");
                return(Task.CompletedTask);
            };

            await host.StartAsync();

            return(0);
        }