目前我正在制作一个页面,显示从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';
}
}