我试图了解 ExpressJS 和 Socket.IO。我将路线放在一个单独的文件中,我从我的 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');
但是,当我尝试从我的一条路线发出事件时,我没有引用 socket.io。
exports.update = function(req, res){
return Item.findById(req.params.id, function(err, item) {
// Do some checks and save.
socket.emit('updated');
}
}
我理解为什么这可能不可用。相反,我不明白处理 socket.io 的最佳方法是从 app.js 以外的另一个文件中获取什么。我在看这个问题(见里卡多的回答),但我仍然不清楚。理想情况下,我想避免这样做:
路线=需要(“路线/我的路线”)(io);