Express 4将Socket.IO传递到Index.js



我正试图在路由中使用socket-io,但我尝试过的每一种方法都会给我一个错误,或者在index.js文件中返回未定义的app.io。

下面给了我错误:

var search = 1 + req.url.indexOf('?');
                          ^
TypeError: Cannot read property 'indexOf' of undefined

对于线路:

app.use('/', require('./routes/index')(io));

bin/www-

var app = require('../app');
app.io.attach(server);
//var io = app.io;
//io.attach(server);

Index.js

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index', {
    title: 'Home'      
  });
});
router.get('/getSubmit', function(req, res){;
    console.log("submitted");
});
module.exports = function(io) {
    var app = require('express');
    var router = app.Router();
    io.on('connection', function(socket) {
    });
    return router;
};

module.exports = router;

app.js

var express = require('express');
var path = require('path');
var logger = require('morgan'); //logs information to terminal
var socket_io    = require( "socket.io" );

var app = express();
app.use(express.static(path.join(__dirname, 'public')));
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));

var io           = socket_io();
app.io           = io;
app.use('/', require('./routes/index')(io)); //adding (io) or (app.io) gives the above error.
app.io.on('connection', function(socket){
  console.log("Socket.io connected"); //This works
});

module.exports = app;

由于Express 4:中的更改

var io           = socket_io();
app.io           = io;
app.set('socketio', io);

Index.js router.get

  router.get('/example', function(req, res){
    var socket = req.app.get('socketio');
    socket.emit('event', data);
   });

最新更新