Example #1
0
        protected IClientBuilder AddDefaultSettings(IClientBuilder builder, NetConnectionParameters parameters)
        {
            var config = (IConfiguration)Services.GetService(typeof(IConfiguration));

            var tcpPort      = (parameters.TcpPort > 0) ? parameters.TcpPort : config.GetValue <int>("Network:TcpPort");
            var udpPort      = (parameters.UdpPort > 0) ? parameters.UdpPort : config.GetValue <int>("Network:UdpPort");
            var udpLocalPort = (parameters.UdpLocalPort > 0) ? parameters.UdpLocalPort : config.GetValue <int>("Network:UdpLocalPort");

            return(builder
                   .UseIp(parameters.Address)
                   .UseTcp(tcpPort)
                   .UseUdp(udpPort, udpLocalPort)
                   .UseZeroFormatter()
                   .UseConfiguration(config)
                   .ConfigureLogging(logBuilder =>
            {
                logBuilder.AddConfiguration(config.GetSection("Logging"));
                logBuilder.AddConsole();
            })
                   .RegisterTypes(serviceCollection =>
            {
                serviceCollection.AddSingleton(c => this);
                serviceCollection.AddSingleton(c => this.Chat);
                this.RegisterTypes(serviceCollection);
            })
                   .RegisterPacketHandler <User.Packets.LoginReplyPacket, User.LoginClientHandler>()
                   .RegisterPacketHandler <Chat.Packets.ChatReplyPacket, ChatReceiverHandler <TUser> >());
        }
Example #2
0
        /// <inheritdoc />
        public override Task <bool> Start(NetConnectionParameters parameters = default)
        {
            var builder = AddDefaultSettings(new ServerBuilder(), parameters);

            OnServerBuild(builder);

            this.NetworkerServer = builder.Build();
            this.NetworkerServer.ClientDisconnected += ClientDisconnected;
            this.NetworkerServer.Start();

            return(Task.FromResult(true));
        }
        /// <inheritdoc />
        public override Task <bool> Start(NetConnectionParameters parameters)
        {
            this.status = NetPeerStatus.Connecting;

            var builder = AddDefaultSettings(new ClientBuilder(), parameters);

            OnClientBuild(builder);

            this.NetworkerClient               = builder.Build();
            this.NetworkerClient.Connected    += ClientConnected;
            this.NetworkerClient.Disconnected += ClientDisconnected;

            var connectResult = this.NetworkerClient.Connect();

            if (!connectResult.Success)
            {
                var errors = string.Join(", ", connectResult.Errors.ToArray());
                Logger?.LogWarning(errors);
                return(Task.FromResult(false));
            }

            NetworkerClient.Send(new LoginPacket(parameters.Username, parameters.Password));

            var config  = (IConfiguration)Services.GetService(typeof(IConfiguration));
            var timeout = config.GetValue <int>("Network:ConnectTimeout");

            if (timeout <= 2)
            {
                timeout = 2;
            }

            int timeoutSeconds = timeout * 2;

            while (timeoutSeconds > 0 && (status == NetPeerStatus.Connecting ||
                                          status == NetPeerStatus.Authenticating))
            {
                Thread.Sleep(500);
                timeoutSeconds -= 1;
            }

            return(Task.FromResult(status == NetPeerStatus.Online));
        }
Example #4
0
        protected IServerBuilder AddDefaultSettings(IServerBuilder builder, NetConnectionParameters parameters)
        {
            var config = (IConfiguration)Services.GetService(typeof(IConfiguration));

            var tcpPort = (parameters.TcpPort > 0) ? parameters.TcpPort : config.GetValue <int>("Network:TcpPort");
            var udpPort = (parameters.UdpPort > 0) ? parameters.UdpPort : config.GetValue <int>("Network:UdpPort");

            return(builder
                   .UseTcp(tcpPort)
                   .UseUdp(udpPort)
                   .UseZeroFormatter()
                   .UseConfiguration(config)
                   .ConfigureLogging(logBuilder =>
            {
                logBuilder.AddConfiguration(config.GetSection("Logging"));
                logBuilder.AddConsole();
            })
                   .RegisterTypes(serviceCollection =>
            {
                serviceCollection.AddSingleton(c => this);
                serviceCollection.AddSingleton(c => this.Chat);
                this.RegisterTypes(serviceCollection);
            }));
        }
Example #5
0
 public abstract Task <bool> Start(NetConnectionParameters parameters = default);