express.js 4 et prises avec un routeur express

Je suis en train de réellement créer un nœud simple à l'aide de l'API express.js 4 mais j'ai besoin d'un peu de 'temps réel' événements pour lesquels j'ai ajouté le support.io. Je suis assez nouveau à la fois donc je suis susceptible manque quelque chose de base, mais je ne peux pas trouver de bons docs/tutoriaux sur ce.

Dans l'express app (créé avec l'express générateur) j'ai quelque chose comme ceci basé sur des exemples simples de projet et les docs que j'ai lu. Ceci fonctionne bien et à partir d'applications clientes, je peux envoyer/recevoir le support d'événements:

var express = require('express');
var path = require('path');
var logger = require('morgan');
var api = require('./routes/api');
var app = express();
var io = require('socket.io').listen(app.listen(3000));

app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/api', api);

io.sockets.on('connection', function (socket) {
    console.log('client connect');
    socket.on('echo', function (data) {
        io.sockets.emit('message', data);
    });
});


//error handlers omitted

module.exports = app;

mais je veux utiliser les sockets de mon API routes (dans l' ./routes/api.js le fichier que j'ai 'besoin' ci-dessus). Par exemple, quelqu'un pourrait utiliser l'API pour METTRE/POST une ressource et je veux que la diffusion de socket connecté.io clients.

Je ne vois pas comment utiliser le " io " variable ou d'organiser le code, actuellement, dans le io.sockets.on('connection' ... fonction à l'intérieur de voies express. Voici la ./routes/api.js fichier:

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

router.put('/foo', function(req, res) {
    /* 
      do stuff to update the foo resource 
      ...
     */

    //now broadcast the updated foo..
    io.sockets.emit('update', foo); //how?
});

module.exports = router;

source d'informationauteur darrend