2013-02-26 50 views
0

我想爲我的應用程序的結構,但不知道如何從子路由器socket.io打電話並將其連接到服務器表達結構和應用程序中使用socket.io

//應用程序。 JS

var express = require('express') 
, http = require('http') 
, path = require('path'): 
, i18n = require("i18n"); 

var app = express(); 
. 
. 
app.use(app.router); 
require('./routes')(app); 
http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express port " + app.get('port')); 
}); 

//routes.js

module.exports = function (app) { 
var rou_admin = require('./routers/admin') 
, rou_login = require('./routers/login') 
, rou_page = require('./routers/page') 
, rou_logou = require('./routers/logout'); 

function restrict(req, res, next) { 
    if (req.session.user){ 
    next(); 
    } else { 
    res.redirect('/login'); 
    } 
} 

//General 
app.get('/', rou_page.page); 

//Admin 
app.get('/admin', rou_admin.admin); 
//xxxx 
app.get('/xxxx', rou_admin.xxxx); 
//ssss 
app.get('/ssss', rou_admin.ssss); 
. 
. 
}; 

//routes/admin.js

exports.admin = function(req, res){ 
    res.render('index',{title: 'Chat Room'}) 
    var io = require('socket.io').listen(app); 

    io.sockets.on('connection', function(socket) { 
      ...code... 
    } 
}; 

我該怎麼做,如果你有更好的主意。 var io = require('socket.io')。listen(app);

回答

1

您已經獲得了大部分解決方案。只是做一些改動:

routes.js

module.exports = function (app) { 
var rou_admin = require('./routers/admin')(app), //pass app to routes/admin.js itself 

路線/ admin.js

function admin(app) 
{ 

    admin.start= function(req, res){ 
    res.render('index',{title: 'Chat Room'}) 
    var io = require('socket.io').listen(app); 

      ...code... 
    }; 
} 
module.exports = admin; 

這裏它只是定義功能,你可以使用admin.start()來執行代碼。