public override void Touch(string connectionId)
        {
            SocketAsyncEventArgsExtended connection;

            if (ClientsToSocket.TryGetValue(connectionId, out connection))
            {
                connection.LastResponse = DateTime.UtcNow;
            }
        }
        private void EndAccept(IAsyncResult ar)
        {
            var listener = ListenSocket.EndAccept(ar);
            var connId   = Guid.NewGuid().ToString();
            var args     = ClientPool.Take();

            args.AcceptSocket = listener;
            args.UserToken    = ServerConnectionFactory.Create(this, connId);
            args.LastResponse = DateTime.UtcNow.AddMinutes(1);
            listener.BeginReceive(_receiveBuffer, 0, _receiveBuffer.Length, SocketFlags.None, EndReceive, args);
            ListenSocket.BeginAccept(EndAccept, ListenArgs);
            ClientsToSocket.TryAdd(connId, args);
            OnClientConnectedInvoke((ServerConnectionBase)args.UserToken);
        }