我正在使用node.js和socket.io。我正在使用http-proxy在運行apache的計算機上使用端口80。 Apache在不同的IP上。這一切都很好。Node.js,Socket.io,Http-Proxy,集羣,Express - 斷開連接時握手丟失 - 延遲重新連接
我在Cluster中添加了一些東西,它變得很時髦。它按預期產生兩名工作人員(雙核虛擬機)。但客戶端的連接已關閉。有時候它是好的,那麼如果你斷開連接,就會有重新連接的延遲(沒有沒有羣集的情況下)。
下面是我有的代碼..任何想法爲什麼在使用羣集斷開和連接之間存在延遲?
var http = require('http'),
httpProxy = require('http-proxy'),
io = require('socket.io'),
cluster = require('cluster'),
express = require('express'),
RedisStore = require('connect-redis')(express);
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
//Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died');
});
} else {
//Server for workers
var app = express.createServer().listen(8585, '172.16.183.129');
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: "secret", store: new RedisStore}));
app.use(app.router);
app.use(express.errorHandler({showStack: false, dumpExceptions: false}));
app.use(express.static(__dirname + '/public'));
});
//Create proxy server to use port 80
var proxy = httpProxy.createServer(8585, '172.16.183.129');
proxy.listen(80, '172.16.183.129');
//Initilize socket.io
var io = require('socket.io').listen(app, {origins: '*:*'});
io.sockets.on('connection', function(socket){
var test = setInterval(function() {
socket.emit('test', { result: numCPUs});
i++;
}, 900);
socket.on('disconnect', function() {
console.log('disconnect');
clearInterval(auctionTimer);
});
});
}