[英]node cluster with socket.io and expressjs
Here's my server code: 这是我的服务器代码:
I'm trying to use cluster with socket.io and expressjs. 我正在尝试使用带有socket.io和expressjs的集群。 I'm testing this on my quad core desktop. 我正在我的四核桌面上测试它。
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();
}
Is there anything that stands out to be really wrong? 有什么特别突出的错误吗?
The logs indicate that everything happens 4 times. 日志表明一切都发生了4次。 Which seems correctly. 这似乎是正确的。 But my socket.io's channel users also indicate that whenever I connect to a page, I connect 4 times, (create 4 user sockets). 但我的socket.io的频道用户也表示每当我连接到一个页面时,我连接4次,(创建4个用户套接字)。 That seems wrong. 这似乎是错的。 How do I fix it and are there other things wrong with my code. 我如何解决它,我的代码还有其他问题。 Thanks. 谢谢。
At this moment socket.io
has no full support for node.js cluster
. 此时socket.io
没有对node.js cluster
完全支持。 It works fine for me with websocket
transport, but xhr-pooling
fails. 使用websocket
传输它对我来说很好,但是xhr-pooling
失败了。 You can reed more in this issues: #939 , #917 . 你可以在这个问题上更多地考虑: #939 , #917 。 The problem is the xhr-pooling
request can get into the thread different from the one which it was originally authorized. 问题是xhr-pooling
请求可以进入与最初授权的线程不同的线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.