nodejs cluster socket.io express app

var httpsport = 8080,               // used for httpsapp
    httpport = 8000,                // used for httpapp
    numCPUs = require('os').cpus().length;

var credentials = {
    key: fs.readFileSync('./cert/client.key'),
    cert: fs.readFileSync('./cert/client.crt'),
    requestCert: true
};

var cluster = require('cluster'),
    socketStore = require('socket.io-clusterhub');

var redis = require('redis'); 
var redisClient = redis.createClient();

if(cluster.isMaster) {
    for(var i=0; i<numCPUs; i++) {
        cluster.fork();
    }
} else {
    var io = require('socket.io'),
        express = require('express'),
    httpsapp = express(),           // for https services
    httpapp = express(),            // for http services
    http = require('http'),
    https = require('https');

httpapp.configure( function () {
    httpapp.use(express.bodyParser());
    httpapp.use(express.methodOverride);
        httpapp.use(httpapp.router);
        httpapp.set('port', httpport);
    httpapp.use(express.static(__dirname+'/public', {maxAge:oneDay}));
});

httpsapp.configure( function() {
    // allow CORS
    httpsapp.all('*', function(req, res, next){
        if(!req.get('Origin')) {
            return next();
        }
        // use "*" here to accept any origin
        res.set('Access-Control-Allow-Origin', '*');
        res.set('Access-Control-Allow-Methods', 'GET');
        res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
        // res.set('Access-Control-Allow-Max-Age', 3600);
        if ('OPTIONS' === req.method) {
            return res.send(200);
        }
        next();
    });
    httpsapp.use(express.bodyParser());
    httpsapp.use(express.static(__dirname + '/public'));
    httpsapp.set('port', httpsport);    
});

var httpServer = http.createServer(httpapp),
    httpsServer = https.createServer(credentials, httpsapp),
    sio = io.listen(httpServer);

    // set the configuration for production.
sio.configure('production', function(){
    sio.enable('browser client etag');
    sio.set('log level', 1);
    sio.set('store',socketStore);
    sio.set('transports', [
        'websocket',
        'flashsocket',
        'htmlfile',
        'xhr-polling',
        'jsonp-polling'
    ]);
});

    sio.of('/namespace1').on('connection', function(socket) {

            socket.on('doSomething', function() { 
                socket.emit('reply',{hello:world}) });



    httpsapp.get("/user", function(req, res) {
                 // ...
            });
    }
}

If node cluster is used, I'm getting the response: Cannot GET /user. But without cluster, it is able to service the https.get("/user").

Also, using cluster, I would like to check if the redis, http(s), socket.io and express module should be declare in the workers part or declare globally?

The httpsapp.get() is nested within the socket space because it would want to reply to the specific socket. Is there any way to get around this structure?

Anyone could figure our why httpsapp.get() is not servicing request? And also where would those declaration be appropriate? Thank you!