私のサーバコードは次のとおりです。socket.ioとexpressjsのノードクラスタ
私はsocket.ioとexpressjsでクラスタを使用しようとしています。私は私のクアッドコアのデスクトップでこれをテストしています。
var cluster = require('cluster')
var numCPUs = require('os').cpus().length
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork()
}
console.log(new Date());
}
else {
// get required modules
var connect = require('connect');
var express = require('express');
var mongo = require('mongodb');
var MongoStore = require('connect-mongo')(express);
var server;
var redis = require('redis');
var http = require('http');
// create server object
app = exports.module = express();
function configureServer() {
//configure environments
app.configure('production', function() {
app.use(express.errorHandler());
});
//configure server instance
app.configure(function() {
app.use(express.compress())
// set jade as default view engine
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.cookieParser("refdgfd"));
app.use(express.methodOverride());
app.use(app.router);
// use express logger
});
loadModules();
}
var server = http.createServer(app).listen(80);
socket = require('socket.io').listen(server);
var RedisStore = require('socket.io/lib/stores/redis')
, pub = redis.createClient()
, sub = redis.createClient()
, client = redis.createClient();
socket.set('store', new RedisStore({
redisPub : pub
, redisSub : sub
, redisClient : client
}));
socket.configure(function() {
socket.set('log level', 1);
socket.set('transports', ['websocket']);
});
configureServer();
}
本当に間違っていることは何ですか?
ログには、すべてが4回発生することが示されています。どちらが正しく見えますか?しかし、私のsocket.ioのチャンネルユーザーは、ページに接続するたびに4回(4つのユーザーソケットを作成)接続することを示しています。それは間違っているようだ。どのように修正するのですか?私のコードに間違ったことがありますか?ありがとう。
私は全く同じ問題を抱えています。コア数で重複したメッセージ。私はそこにすべての組み合わせを試したと運がない。あなたはこれの修正を見つけましたか? – Maziyar