В настоящее время я делаю страницу, которая отображает данные, собранные из API. Большая часть данных обновляется на стороне сервера каждые 4 часа, но некоторые из них обновляются всякий раз, когда клиент запрашивает маршрут индекса. В результате происходит задержка отправки файла индекса, поскольку данные должны быть обновлены. Я хочу собрать обновленные данные после того, как страница была запрошена и отправлена, чтобы не было задержки. Моей первой идеей было сделать запрос на стороне клиента, который будет обрабатывать обновление отображения после сбора данных, но, насколько я знаю, я не знаю, как это сделать, не предоставив им ключ API. Должен ли я подходить к проблеме таким образом или есть лучший способ сделать это? Я использую Express для серверной части, Axios используется для выполнения запросов get, а EJS является механизмом шаблонов.
Вот код:
// This is called before the data is send in a for loop
data.gameData[i].player_count = await SteamModule.liveGetCurrentPlayers(data.gameData[i].appid);
res.render('index', {data: data});
// This is the function that is called
liveGetCurrentPlayers: async (id) => {
const res = await axios.get(`${base}/ISteamUserStats/GetNumberOfCurrentPlayers/v1/?key=${key}&appid=${id}`, {timeout: 1000}).catch(err => {
Logger.error("Error getting updated user data per request");
return 'Error';
});
if(res.data) {
return res.data.response.player_count;
} else {
return 'Error';
}
}