[英]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.