Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 带有socket.io和expressjs的节点集群_Node.js_Redis_Socket.io_Cluster Computing_Node Cluster - Fatal编程技术网

Node.js 带有socket.io和expressjs的节点集群

Node.js 带有socket.io和expressjs的节点集群,node.js,redis,socket.io,cluster-computing,node-cluster,Node.js,Redis,Socket.io,Cluster Computing,Node Cluster,这是我的服务器代码: 我正在尝试将集群与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() } conso

这是我的服务器代码:

我正在尝试将集群与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();
}
var cluster=require('cluster'))
var numpus=require('os').cpus().length
if(cluster.isMaster){
//叉工。
对于(变量i=0;i
有什么明显的错误吗


日志显示每件事都会发生4次。这似乎是正确的。但是我的socket.io的通道用户还指出,每当我连接到一个页面时,我会连接4次(创建4个用户套接字)。这似乎是错误的。我如何修复它,以及我的代码是否存在其他问题。谢谢。

目前,
socket.io
不完全支持
node.js集群。它在
websocket
传输中运行良好,但
xhr池
失败。您可以在以下问题中了解更多信息:。问题是
xhr池
请求可以进入与最初授权的线程不同的线程。

谢谢,我实际上只使用websocket,忽略了在代码中包含它,我现在已经更新了它。xhr轮询除了这里提到的问题之外还有一些问题,websocket通常通过SSL是可靠的。我也有同样的问题。核心数中的重复消息。我尝试了所有的组合,但没有运气。你找到解决办法了吗?