【发布时间】:2012-09-16 00:18:56
【问题描述】:
我正在尝试了解 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 以外的另一个文件。我在看this question(见里卡多的回答),但我仍然不清楚。理想情况下,我想避免这样做:
routes = requires("routes/myRoutes")(io);
【问题讨论】:
-
你可以避免使用 http 模块,尽管 socket.io 需要一个 http 服务器,你可以从 express 依赖项 (3.xx) 中调用它: var app = express(), server = app.听(3000),io = socket.listen(服务器);
-
更新:看看feathers.js
标签: javascript node.js socket.io express