2012-08-23 28 views
6

यहाँ अपने सर्वर कोड है। मैं अपने क्वाड कोर डेस्कटॉप पर इसका परीक्षण कर रहा हूं।नोड क्लस्टर

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 गुना होता है। जो सही ढंग से लगता है। लेकिन मेरे सॉकेट.io के चैनल उपयोगकर्ता यह भी संकेत देते हैं कि जब भी मैं किसी पृष्ठ से कनेक्ट होता हूं, तो मैं 4 बार कनेक्ट करता हूं, (4 उपयोगकर्ता सॉकेट बनाएं)। यह गलत लगता है। मैं इसे कैसे ठीक कर सकता हूं और मेरे कोड के साथ अन्य चीजें गलत हैं। धन्यवाद।

+0

मुझे बिल्कुल वही समस्या है। कोर की संख्या में डुप्लिकेट संदेश। मैंने वहां सभी संयोजनों की कोशिश की है और कोई भाग्य नहीं है। क्या आपको इसके लिए कोई फिक्स मिला है? – Maziyar

उत्तर

3

इस समय socket.io पर node.js cluster के लिए कोई पूर्ण समर्थन नहीं है। यह websocket परिवहन के साथ मेरे लिए ठीक काम करता है, लेकिन xhr-pooling विफल रहता है। आप इन मुद्दों में और अधिक पढ़ सकते हैं: #939, #917। समस्या xhr-pooling अनुरोध धागे में मूल रूप से अधिकृत किए गए से अलग हो सकता है।

+0

धन्यवाद, मैं वास्तव में केवल वेबस्केट का उपयोग कर रहा हूं, इसमें शामिल करने के लिए उपेक्षित है कि मेरे कोड में, मैंने इसे अभी अपडेट किया है। xhr-polling में उल्लिखित लोगों के अलावा कुछ समस्याएं हैं और वेबस्केट आमतौर पर एसएसएल के माध्यम से विश्वसनीय है। – Harry

संबंधित मुद्दे