ExpressJS - Prise.IO avec la Route de Séparation

Je vais essayer d'obtenir ma tête autour de ExpressJS et de la Prise.IO. J'ai mes itinéraires dans un fichier séparé que j'inclus à partir de mon app.js:

var express = require('express')    
  , db = require('./db')
  , mongoose = require('mongoose')
  , models = require('./models/device')
  , http = require('http')
  , path = require('path')
  , app = express()
  , server = http.createServer(app)
  , io = require('socket.io').listen(server)
  , routes = require('./routes/myRoutes');

Cependant lorsque je l'ai essayer et émettent un événement à partir d'une de mes routes je n'ai pas de référence à la prise.io.

exports.update = function(req, res){
    return Item.findById(req.params.id, function(err, item) {
       //Do some checks and save.
       socket.emit('updated');
    }
}

Je comprends pourquoi cela pourrait ne pas être disponible. Plutôt je ne comprends pas quelle est la meilleure façon d'obtenir une poignée sur la socket.io est à partir d'un autre fichier autre que app.js. Je regardais cette question (voir Ricardo réponse), mais je ne suis toujours pas clair. Idéalement, je voudrais éviter de le faire:

itinéraires = nécessite("routes/myRoutes")(io);

  • vous pouvez éviter d'utiliser le module http, bien que prise.io besoin d'un serveur http, vous pouvez appeler à partir de l'express de dépendance (3.x.x) donc: var app = express(), serveur = app.écouter(3000), io = socket.écouter(serveur);
  • Mise à jour: Prendre un coup d'oeil à feathers.js
InformationsquelleAutor backdesk | 2012-09-24