GET запрос каждые 10 секунд. Socket.IO

155
13 января 2018, 02:58

Добрый день. Необходимо сделать так, чтоб GET запрос отправлялся каждые 10 секунд, в последствии нужно будет проверять есть ли такие данные в базе и сохранять их туда, если их не было. Но пока что, просто нужно, чтоб гет запрос к урлу отправлялся каждые 10 секунд и рендерил новые данные. Запнулся и не понимаю куда копать.. Использую Express, Mongoose и Socket IO

app.js: ( код, который сохраняет в бд данные закоментировал )

var tender = new mongoose.Schema({
    tenderId: String,
    tenderDate: String
});
var Tenders = mongoose.model("Tenders", tender);
let offset = new Date().toISOString();
let url = 'http://public.api.openprocurement.org/api/2.4/tenders?offset=' + offset + '+02.00';
router.get('/', function (req, res, next) {
    request.get(url, function (err, response, body) {
        if (err || response.statusCode !== 200) {
            return res.sendStatus(500);
        }
        body = JSON.parse(body);
        let tendersList = [];
        body.data.forEach(function (item) {
            let tendersData = new Tenders({
                tenderId: item.id,
                tenderDate: item.dateModified
            });
            tendersList.push(tendersData);
        });
        // Tenders.insertMany(tendersList)
        //     .then(item => {
        //         console.log("Saved to db")
        //     })
        //     .catch(err => {
        //         throw new Error;
        //     });
        res.render('index', {tenders: body});
    });
});
router.get('/tender/:id', function (req, res, next) {
    let id = req.params.id;
    request.get('http://public.api.openprocurement.org/api/2.4/tenders/' + id, function (err, response, body) {
        if (err || response.statusCode !== 200) {
            return res.sendStatus(500);
        }
        body = JSON.parse(body);
        res.redirect('https://prozorro.gov.ua/tender/' + body.data.tenderID);
    });
});
app.use(function (err, req, res, next) {
    if (app.get('env') == 'development') {
        let errorHandler = express.errorHandler();
        errorHandler(err, req, res, next);
    } else {
        res.send(500);
    }
});
var server = http.createServer(app);
server.listen(config.get('port'), function () {
    log.info('Express server listening on port ' + config.get('port'));
});
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
    setInterval( function () {
       socket.emit('tenders');
    }, 5000);
});

index.ejs:

<% if (tenders.data) { %>
<% tenders.data.forEach(function(obj){ %>
<li style="list-style-type: none;"><%= obj.id %></li>
<li style="list-style-type: none; margin-bottom: 10px;"><%= obj.dateModified%></li>
<li style="list-style-type: none; margin-bottom: 15px; display: inline-block; background: none;"><a style="text-decoration: none; border: 2px solid #00b3ee; color: #00b3ee; padding: 5px 10px; text-align: center;" href="tender/<%= obj.id %>">See tender</a></li><br>
<% }); %>
<% } %>
<script src = "../socket.io/socket.io.js"></script>
<script>
    var socket = io.connect();
    socket.on('tenders', function (data) {
        console.log(data);
    });
</script>
READ ALSO
Передача файла в форме ajax

Передача файла в форме ajax

Есть два отчетаВ первом форма содержит текстовые значения

152
сравнение с регулярным выражением

сравнение с регулярным выражением

Скрипт получает переменную и сравнивает ее со значением, и при равенстве выполняет код else if(result === 'Сколько времени'){

129
Minecraft Server Hash ID [требует правки]

Minecraft Server Hash ID [требует правки]

Как можно получить хэш сервера Minecraft? Почитал здесь (Server ID String), но ничего не понялПишу на PHP

232