Esempio n. 1
0
        private void ClientConnected(string userName, string id)
        {
            if (_userName == userName)
            {
                _connections.AddSelf(userName, id);
                _connected = true;
                _mainThreadPool.Enqueue(() => OnConnected?.Invoke());
                Debug.Log("Connection started");
                return;
            }

            var i = _connections.Add(userName, id);

            Debug.Log($"OnConnected: {userName} {userName == _userName}");

            _mainThreadPool.Enqueue(() => OnClientConnected?.Invoke(_connections[i]));
        }
Esempio n. 2
0
        public override Task OnConnectedAsync()
        {
            string name = Context.User.Identity.Name;
            string id   = Context.ConnectionId;

            _connections.Add(name, id);

            Clients.All.SendAsync("OnConnected", name, id).ContinueWith((tast) =>
            {
                foreach (var client in _connections.Clients)
                {
                    Clients.Client(id).SendAsync("OnClientUpdate", client);
                }
            });


            return(base.OnConnectedAsync());
        }
Esempio n. 3
0
        protected Server(ushort port, Logger logger, IDatabase database)
        {
            if (logger == null || database == null)
            {
                throw new Exception("logger == null || database == null");
            }

            Port         = port;
            Logger       = logger;
            Database     = database;
            _tcpListener = new TcpListener(IPAddress.Any, Port);

            _listenThread = new Task(async() =>
            {
                try
                {
                    _tcpListener.Start(100);
                    Logger.Info("Started on port: {0}", Port);
                }
                catch (Exception e)
                {
                    Logger.Error("Failed to start on port: {0}\r\n{1}", Port, e.Message);
                    return;
                }

                Logger.Info("Waiting for a connection...");
                while (KeepRunning)
                {
                    try
                    {
                        var soc   = await _tcpListener.AcceptSocketAsync();
                        var state =
                            (INetworkClient)Activator.CreateInstance(typeof(NetworkClient <TPacketType>), soc, this);
                        NetworkClients.Add(state);
                        ClientConnected(state);
                    }
                    catch (Exception e)
                    {
                        //
                    }
                }
            });
        }