Узел Отправка данных с сервера на клиент (уже загруженная страница индекса /) через некоторое время из /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();
});