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])); }
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()); }
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) { // } } }); }