【问题标题】:structure and use in app socket.io应用程序socket.io中的结构和使用
【发布时间】:2013-02-11 09:06:36
【问题描述】:

我想为我的应用程序建立一个结构,但不知道如何从子路由器调用 socket.io 并将其附加到服务器 express

//app.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);

【问题讨论】:

    标签: javascript node.js express socket.io


    【解决方案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() 来执行你的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多