簡體   English   中英

在兩個Node.js路由之間交換數據的更好方法

[英]Better way of exchanging data between two Node.js routes

如果在兩個Node.js路由之間存在優化的通信方式,那將是有益的? 我主要使用Express,但我不知道Express模塊​​提供這種功能。 我不確定我是否缺少正確的框架或正確的NPM腳本。 我知道可以通過簡單的Ajax來實現此功能,但是我正在尋找更清潔的解決方案,例如websockets。 我使用socket.io,但它似乎專注於客戶端和服務器之間的通信,而不是兩個服務器之間的通信。

更新-我要實現什么? 而不是將所有我需要的請求放在一個文件中,例如:

router.post('/entode', function(req, res) {
        var word_rf = req.body.word1;
        if( /^[a-zA-Z]+$/g.test( word_rf ) && word_rf.length<18 ) {
            entode.entode_function_rf(word_rf, function (res1) {
                io.sockets.emit('series_results', res1);
                res.send('done');
            });
        } else {
            io.sockets.emit('error_rf', 'incorrect input');
            res.send('done');
        }
    });
    //-------------------------
    router.post('/yandex_short', function(req, res) {
        var word_rf = req.body.word1;
    ...
    });
    //-------------------------
    router.post('/yandex_long', function(req, res) {
        var word_rf = req.body.word1;
    ...
    });

我更喜歡這樣的東西:

router.post('/', function(req, res) {
    var word_rf = req.body.word1;
    var aPromise = new Promise(function(resolve,reject) {
        makeRequestFn('./some_route/'+word_rf,function(returnedData){
            resolve(returnedData)    
        });
    });
    aPromise.then(function(data) {
        io.sockets.emit('series_results', data);
        res.send('done');
    });
    //The other routes stay inside this scope
});

這樣,由於我將邏輯直接轉移到其他文件,因此不需要模塊。

抱歉,我參加聚會很晚,但是我認為您想要的是進程間的交流。 同樣,不要以路線為依據,而以微服務為理由。 因此,最終您獲得的是解耦的微型應用程序,它們可以通過websocket,消息隊列,http等在它們之間共享數據。

閱讀來自NGINX博客的出色文章 它是一系列教程的一部分,它將指導您完成構建自己的微服務的過程。

干杯,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM