Javascript 节点从';发送数据到客户端(已加载';索引页)/webhook';另一个端点/代码块
我的意图是在用户在“/”页面上执行第三方API(例如PayPal)之后;从该第三方API系统接收“/webhook/check”端点上的数据后,将数据中继到“/”索引页,用户仍在那里等待响应 下面是我的两个控制器 index.js控制器 webhooks.js控制器 更新: 我用了socket.io index.js webhooks.jsJavascript 节点从';发送数据到客户端(已加载';索引页)/webhook';另一个端点/代码块,javascript,node.js,socket.io,notifications,paypal-webhooks,Javascript,Node.js,Socket.io,Notifications,Paypal Webhooks,我的意图是在用户在“/”页面上执行第三方API(例如PayPal)之后;从该第三方API系统接收“/webhook/check”端点上的数据后,将数据中继到“/”索引页,用户仍在那里等待响应 下面是我的两个控制器 index.js控制器 webhooks.js控制器 更新: 我用了socket.io index.js webhooks.js 您可以使用EventEmitter: const EventEmitter = require('events'); const myEmitter = n
您可以使用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();
});
非常感谢。让我试试这个。我不确定如何在客户端触发事件。我会回去的。我一直在反复使用sockets.io和HTML5服务器发送事件。可能使用它ping客户端并获取数据,而不是常量轮询。SSE仅在一个方向
server=>clients
,因此,当您不想设置套接字的服务器并且只需要一个方向的通信通道时,这很好,socket.io是双向的,当客户端和服务器需要实时交换大量消息和事件时,它可以更好地工作。我没有工作。
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();
});
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;
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();
});
};
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();
});