Я использую локальный веб-сервер node.js.Из-за пределов машины я посылаю запрос на получение (http://ip:port/send_data?data) с данными каждые 1 миллисекунду (это требуется) каждого игрока. Затем игрок помещается в массив (если идентификатор совпадает, я обновляю его данные)., если нет, вставьте его в массив.) Эти данные должны отображаться пользователям в режиме реального времени в http://ip:port/data-fetcher.
const express = require('express'),
server = express();
var json_data = "";
var player_object = "";
var player_exists = false;
server.set('port', process.env.PORT || 80);
server.get('/data-fetcher',(request,response)=>{
json_data = "";
response.sendFile(__dirname + '/data-fetcher.html');
});
server.get('/send-data',(request,response)=>{
player_object = request.query;
player_exists = false;
if(json_data != "")
{
for(var i = 0; i < json_data.players.length; i++)
{
if(json_data.players[i].id == player_object.id)
{
json_data.players[i] = player_object;
player_exists = true;
}
}
if(!player_exists)
{
json_data.players.push(player_object);
}
} else {
json_data = {players:[], entities:[{hello:"hello"}, {hello:"hello"}]};
json_data.players.push(player_object);
}
response.json("hello");
});
server.get('/get-data',(request,response)=>{
response.json(json_data);
})
server.listen(80,()=>{
console.log('Express server started at port 80');
});
Этот метод работает быстро и стоит очень мало мс. Проблемаявляется то, что после остановки симулятора, который отправляет запросы на получение сайта, данные на сайте продолжают меняться в течение примерно 10 секунд. Я предполагаю, что это из-за трафика, который мог появиться. Есть ли способ не выполнять код после получениястарые запросы после получения новых? Или есть лучший способ?