Узел Отправка данных с сервера на клиент (уже загруженная страница индекса /) через некоторое время из /webhook другой блок конечной точки / кода

Я намерен после того, как пользователь выполнит сторонний API (например, PayPal) на странице '/'; после получения данных о конечной точке '/ webhook / check' из этой системы стороннего API, перенаправьте данные на индексную страницу '/', где пользователь все еще ожидает ответа.

Ниже приведены два моих контроллера.

контроллер index.js

router.get('/', function (req, res) {
    res.render('index', model);
});

контроллер webhooks.js

router.post('/check', function (req, res) {
    console.log(req.body);

    // WHEN A WEBHOOK NOTIFICATION IS RECEIVED HERE, DO SOMETHING
    // TO SEND DATA TO ALREADY LOADED `/' INDEX PAGE RENDERED BY
    // CONTROLLER ABOVE

    res.end();
});

Обновление: я использовал socket.io

index.js

var io = require('socket.io').listen(server);

io.on('connection', function(socket){
    console.log('Socket, on connection, now sending/receiving on `webhooks`' );
    // socket.join("test");
    socket.on('webhooks', function(data){
        console.log(data);
    });


});

app.socketsio  = io;

webhooks.js

var socketsio = require('../index').socketsio;


module.exports = function (router) {

    var model = new WebhooksModel();

    router.post('/check', function (req, res) {

        // console.log(req.body);
        socketsio.emit('webhooks', req.body);
        res.end();
    });

};

1 ответ

Вы можете использовать EventEmitter:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

router.get('/', function (req, res) {
    res.render('index', model);

    myEmitter.on('checkNotification', function(data) {
        // Process data
    })
});

router.post('/check', function (req, res) {
    console.log(req.body);

    myEmitter.emit('checkNotification', 'Your data')

    res.end();
});
Другие вопросы по тегам