我有一些过程:
var fetcher = new Fetcher({ url: 'http://www.example.com' });
setInterval(function() {
fetcher.getImageUrls().then(saveToDb, handleError, notifyProgress);
}, 10000);
我也有一个网站,我想使用socket.io推送更新 关于进度(使用notifyProgress方法)。我不知道 如何将网站与流程同步。
请注意,我无法使用事件,因为该过程可以在任何地方生活(我也可以使用更多实例复制该过程)
我该怎么做?
由于
答案 0 :(得分:0)
您想使用Redis创建PUB / SUB系统。
您将向频道发布您的更新;
// notifyProgress.js
var Redis = require('redis'),
redis = Redis.createClient(6379, 127.0.0.1);
module.exports.publish = function (req, res, next) {
//publish to the mySpecialChannel channel.
redis.publish('mySpecialChannel', data);
};
您的不同服务器/群集将订阅该频道。
//socket server
var Redis = require('redis'),
redis = Redis.createClient(6379, 127.0.0.1),
app = express(),
server = require('http').createServer(app),
io = require('socket.io')(server);
redis.on('subscribe', function (channel, count) {
console.log('server subscribed to %s', channel);
});
redis.on('message', function (channel, message) {
if (channel === 'mySpecialChannel') {
//send info to your clients.
io.emit('update', message)
}
});
redis.subscribe('mySpecialChannel');