title: how to use socket.io in express route?
body: <p>I'm using Express 4 (created with express 4 generator) with Socket.io but I can't figure out how to use SocKet.io in Express routes(like socket.emit()).</p>
  
  <p>here is my code</p>
  
  <pre><code>app.js
  
  ======================================================================
  // get all the tools we need
  var express = require('express');
  var session = require('express-session');
  var mongoStore = require('connect-mongo')(session);
  var passport = require('passport');
  var path = require('path');
  var favicon = require('serve-favicon');
  var logger = require('morgan');
  var cookieParser = require('cookie-parser');
  var bodyParser = require('body-parser');
  var mongooseConnection = require('./database/db.js');
  var flash = require('connect-flash');
  
  
  var app = express();
  
  // view engine setup
  app.set('view engine', 'ejs');// set up ejs for templating
  
  // app.set('views', path.join(__dirname, 'views'));
  
  // uncomment after placing your favicon in /public
  //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  
  require('./config/passport')(passport); // pass passport for configuration
  
  // required for passport
  app.use(session({
      secret: 'random_secret_key',
      store: new mongoStore({
          mongooseConnection: mongooseConnection
      }),
      resave: false,
      saveUninitialized: true
  }));
  app.use(passport.initialize());
  app.use(passport.session());// persistent login sessions
  app.use(flash()); // use connect-flash for flash messages stored in session
  
  
  // set up our express application
  app.use(logger('dev'));
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({extended: false}));
  app.use(cookieParser());
  
  //Serve static content for the app from the "public" directory in the application directory.
  app.use(express.static(path.join(__dirname, 'public')));
  
  // routes ======================================================================
  var index = require('./routes/index');
  var api = require('./routes/api');
  // var users = require('./routes/users');
  app.use('/', index);
  app.use('/api', api);
  // app.use('/users', users);
  
  // catch 404 and forward to error handler
  app.use(function (req, res, next) {
      var err = new Error('Not Found');
      err.status = 404;
      next(err);
  });
  
  // error handler
  app.use(function (err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
  
      // render the error page
      res.status(err.status || 500);
      res.render('error');
  });
  
  module.exports = app;
  </code></pre>
  
  <p>for create server app is needed and socket.io need server instanse</p>
  
  <p>server.js</p>
  
  <pre><code>#!/usr/bin/env node
  
  /**
   * Module dependencies.
   */
  
  var app = require('../app');
  var debug = require('debug')('ultimate-tic-tac-toe:server');
  var http = require('http');
  
  /**
   * Get port from environment and store in Express.
   */
  
  var port = normalizePort(process.env.PORT || '3000');
  app.set('port', port);
  
  /**
   * Create HTTP server.
   */
  
  var server = http.createServer(app);
  
  require ('../resources/assets/js/socket.io')(server);
  
  /**
   * Listen on provided port, on all network interfaces.
   */
  
  server.listen(port);
  server.on('error', onError);
  server.on('listening', onListening);
  
  /**
   * Normalize a port into a number, string, or false.
   */
  
  function normalizePort(val) {
    var port = parseInt(val, 10);
  
    if (isNaN(port)) {
      // named pipe
      return val;
    }
  
    if (port &gt;= 0) {
      // port number
      return port;
    }
  
    return false;
  }
  
  /**
   * Event listener for HTTP server "error" event.
   */
  
  function onError(error) {
    if (error.syscall !== 'listen') {
      throw error;
    }
  
    var bind = typeof port === 'string'
      ? 'Pipe ' + port
      : 'Port ' + port;
  
    // handle specific listen errors with friendly messages
    switch (error.code) {
      case 'EACCES':
        console.error(bind + ' requires elevated privileges');
        process.exit(1);
        break;
      case 'EADDRINUSE':
        console.error(bind + ' is already in use');
        process.exit(1);
        break;
      default:
        throw error;
    }
  }
  
  /**
   * Event listener for HTTP server "listening" event.
   */
  
  function onListening() {
    var addr = server.address();
    var bind = typeof addr === 'string'
      ? 'pipe ' + addr
      : 'port ' + addr.port;
    debug('Listening on ' + bind);
  }
  </code></pre>
  
  <p>socket.io.js</p>
  
  <pre><code>module.exports = function (server) {
      var io = require('socket.io')(server);
  
      io.on('connection', function(socket){
          console.log('a user connected');
  
          socket.on('disconnect', function(){
              console.log('user disconnected');
          });
  
      });
  
  };
  </code></pre>
  
  <p>i want to use socket.emit() in routes but have no ideea how to pas io object to it.</p>