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');
ただし、ルートの 1 つからイベントを発行しようとすると、socket.io への参照がありません。
exports.update = function(req, res){
return Item.findById(req.params.id, function(err, item) {
// Do some checks and save.
socket.emit('updated');
}
}
これが利用できない理由を理解しています。むしろ、app.js 以外の別のファイルから socket.io のハンドルを取得する最善の方法が何であるかがわかりません。私はこの質問を見ていました(リカルドの回答を参照)が、まだ明確ではありません。理想的には、これを避けたいと思います:
ルート = 必須 ("ルート/myRoutes")(io);