Include the following code in your app.js module (other standard Express module dependancies and middleware left out for brevity):
var express = require('express');
var http = require('http');
var io = require('socket.io');
var routes = require('./routes/index');
var app = express();
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Setup custom app middleware
*/
/* setup socket.io */
io = io(server);
app.use(function(req, res, next) {
req.io = io;
next();
});
io.on('connection', function(socket) {
//log.info('socket.io connection made');
console.log('socket.io connection made');
});
app.use('/', routes);
server.listen('3000');
You can now emit socket.io events from any route handler (./routes/index
in this example):
var express = require('express');
var router = express.Router();
router.post('/', function(req, res, next) {
req.io.emit('some_event');
//do some stuff
req.io.emit("some_other_event"); //we did some stuff - emit a related event
});
module.exports = router;