【发布时间】:2015-05-05 09:56:26
【问题描述】:
如果两个 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
});
通过这种方式,我不需要模块,因为我将逻辑直接转移到其他文件。
【问题讨论】:
-
socket.io 和 node.js 路由 是两个不同的东西。你想达到什么目的。请具体。
-
感谢您指出这一点。我已经更新了我的问题。
标签: javascript node.js socket.io