Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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
Javascript 应用程序socket.io中的结构和使用_Javascript_Node.js_Express_Socket.io - Fatal编程技术网

Javascript 应用程序socket.io中的结构和使用

Javascript 应用程序socket.io中的结构和使用,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我想为我的应用程序建立一个结构,但不知道如何从子路由器调用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);

我想为我的应用程序建立一个结构,但不知道如何从子路由器调用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...
  }
};
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;
如果你有更好的主意,我怎么做呢。
var io=require('socket.io')。监听(应用程序)

您已经获得了大部分解决方案。只需做一些更改:

routes.js

module.exports = function (app) {
var rou_admin = require('./routers/admin')(app),  //pass app to routes/admin.js itself
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...
  }
};
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()来执行代码