estoy tratando de conseguir mi cabeza alrededor ExpressJS y Socket.IO. Tengo mis rutas en un archivo separado que incluyo a mis app.js:ExpressJS - Socket.IO con Ruta Separación
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');
Sin embargo cuando intento y emitirá un evento de una de mis rutas tengo ninguna referencia a Socket.IO.
exports.update = function(req, res){
return Item.findById(req.params.id, function(err, item) {
// Do some checks and save.
socket.emit('updated');
}
}
Entiendo por qué esto podría no estar disponible. Por el contrario, no entiendo cuál es la mejor forma de obtener un control sobre socket.io de otro archivo que no sea app.js. Miraba this question (vea la respuesta de Ricardo) pero aún no estoy seguro. Idealmente me gustaría evitar hacer esto:
rutas = requiere ("rutas/MyRoutes") (IO);
puede evitar el uso del módulo http, aunque socket.io necesita un servidor http, puede llamarlo desde la dependencia expresa (3.xx) así: var app = express(), server = app.listen (3000), io = socket.listen (servidor); –
Actualización: Eche un vistazo a feathers.js – backdesk