Как периодически обновлять базу данных Firebase в реальном времени? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть asynctask, который анализирует html, берет некоторый контент из него и затем помещает их в базу данных реального времени firebase (как json). Мой код работает, если вы запускаете код самостоятельно, но так как данные меняются, я хочу отсервер для периодического запуска кода, скажем, каждые 5 минут, чтобы обновить мою базу данных.Это возможно в firebase?Если нет, можете ли вы объяснить альтернативные способы сделать это (когда сервер периодически выполняет ваш код самостоятельно)?

static class fetchdata extends AsyncTask<String, Void, DatabaseReference>{

    private DatabaseReference hurriyetDatabase = FirebaseDatabase.getInstance().getReference("HurriyetNews");

    @Override
    protected DatabaseReference doInBackground(String... urls) {

        String url = urls[0];

        hurriyetDatabase.removeValue();

        try {
            Document wholePage = Jsoup.connect(url).get();
            Elements links = wholePage.select(
                    "div.swiper-slide a[href][href*=/gundem/], " +
                            "div.swiper-slide a[href][href*=/dunya/], " +
                            "div.swiper-slide a[href][href*=/ekonomi/], " +
                            "div.swiper-slide a[href][href*=/teknoloji/]");

            for (int i=0; i< links.size(); i++){
                Element link = links.get(i);
                String newsUrl = link.attr("abs:href");
                Document currentnews = Jsoup.connect(newsUrl).get();

                String category = currentnews
                        .select("meta[property=article:section]")
                        .first()
                        .attr("content");

                String title = currentnews
                        .select("meta[property=og:title]")
                        .first()
                        .attr("content");

                String description = currentnews
                        .select("meta[property=og:description]")
                        .first()
                        .attr("content");

                String imageUrl = currentnews
                        .select("meta[property=og:image]")
                        .first()
                        .attr("content");

                String lastUpdateTime = currentnews
                        .select("time")
                        .first()
                        .attr("datetime");

                NewsEntry currentNews = new NewsEntry(
                        "Hürriyet", category, title, newsUrl, imageUrl, lastUpdateTime, description);


                String id = hurriyetDatabase.push().getKey();
                hurriyetDatabase.child(id).setValue(currentNews);

            }


        } catch (IOException e) {
            e.printStackTrace();
        }

        return hurriyetDatabase;
    }
}

Я хочу использовать этот json в качестве базы данных, которую будут использовать клиенты мобильного приложения.запрос от него относительно их желаний.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Возможно ли это в Firebase?

Да, используя Облачные функции для Firebase , которые позволяют автоматически запускать код бэкэнда.Это также может работать в ответ на события, вызванные функциями Firebase и HTTPS-запросами.Но учтите, что одна облачная функция может реагировать только на изменения, которые происходят одновременно в одном месте.

0 голосов
/ 09 октября 2018

В Firebase вы можете сделать это с помощью облачных функций, которые запускаются в ответ на события, происходящие внутри Firebase или вне его.

В этом конкретном случае вы хотите запускать код по расписанию, поэтому обратите внимание на Облачные функции для запуска по Firebase вовремя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...