Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点从';发送数据到客户端(已加载';索引页)/webhook';另一个端点/代码块_Javascript_Node.js_Socket.io_Notifications_Paypal Webhooks - Fatal编程技术网

Javascript 节点从';发送数据到客户端(已加载';索引页)/webhook';另一个端点/代码块

Javascript 节点从';发送数据到客户端(已加载';索引页)/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

我的意图是在用户在“/”页面上执行第三方API(例如PayPal)之后;从该第三方API系统接收“/webhook/check”端点上的数据后,将数据中继到“/”索引页,用户仍在那里等待响应

下面是我的两个控制器

index.js控制器 webhooks.js控制器 更新: 我用了socket.io

index.js webhooks.js
您可以使用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();
});