Я пытаюсь вызвать REST API каждую минуту с помощью cron, а затем передать этот ответ клиенту с помощью веб-сокетов - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть сайт, который отображает текущую погоду, и я пытаюсь заставить его автоматически обновляться с помощью веб-сокетов. Мой сервер веб-сокетов получает широту и долготу от клиента, и моя цель состоит в том, чтобы каждую минуту передавать их в API погоды с помощью cron, а затем отправлять ответ от этого API моему клиенту.

Вот мой код:

let getWeather = (lat, long) => {
    let key = '';
    let url = `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${long}&appid=${key}`;
    return fetch(url)
        .then(response => {
            return response.json();
        })
        .then(data => {
            return data;
        });
};


cron.schedule('* * * * *', () => {
    // need to call getWeather with lat & long here somehow
});


let wsServer = wss.on('connection', (wsclient) => {
    wsclient.on('message', (message) => {
        let data = JSON.parse(message);
        // data contains both latitude and longitude

        let weatherData = {
            'temp': null,
            'humidity': null,
            'clouds': null
        }  // need to populate this object from getWeather() response

        // broadcast weather back to client
        wss.clients.forEach((client) => {
            client.send(JSON.stringify(weatherData));
        });
    });
});

У меня просто не получается связать все это вместе. Я думаю, что мне может понадобиться передать wsServer в getWeather() и затем вытянуть широту и долготу из data, чтобы перейти к выборке, но я не уверен, как именно это сделать. Я также озадачен тем, как включить cron, чтобы я мог постоянно отправлять клиенту самые новые данные.

Редактировать: Моя цель - чтобы клиент отправлял lat и long один раз, а затем сервер веб-сокетов будет отправлять обновленную погоду каждую минуту. Вот почему я считаю, что мне нужно использовать cron или что-то подобное, чтобы постоянно получать обновленную погоду для отправки обратно.

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