2016-04-09 13 views
0

私のルートでsocket ioを使用できるようにしようとしていますが、私が試したすべての方法でエラーが出るか、index.jsファイルでapp.ioが未定義です。Express 4 Socket.IOをIndex.jsに渡す

下記の私にエラーを与える:ラインの

var search = 1 + req.url.indexOf('?'); 
         ^

TypeError: Cannot read property 'indexOf' of undefined 

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

ビン/ 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; 
をそのためエクスプレス4の変化のの

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; 

答えて

0

var io   = socket_io(); 
app.io   = io; 

app.set('socketio', io); 

Index.jsが

router.get('/example', function(req, res){ 
    var socket = req.app.get('socketio'); 
    socket.emit('event', data); 
    }); 
をrouter.get
関連する問題