Node.js 诺德斯和索克蒂奥。如何组织公开SocketIO实例
我有一个app.js文件,如下所示:Node.js 诺德斯和索克蒂奥。如何组织公开SocketIO实例,node.js,socket.io,Node.js,Socket.io,我有一个app.js文件,如下所示: ... var socket = require('./app/sockets')(io) var routes = require('./app/routes')(server, socket) ... sockets.js看起来是这样的: exports = module.exports = function(io) { return { emit: function() { io.emit('hi', "Some stuf
...
var socket = require('./app/sockets')(io)
var routes = require('./app/routes')(server, socket)
...
sockets.js看起来是这样的:
exports = module.exports = function(io) {
return {
emit: function() {
io.emit('hi', "Some stuff")
}
}
}
exports = module.exports = function(app, io) {
...
var user = require('./controllers/user')(io)
app.get({ path: '/users/:id', version: '1.0' }, user.getUserById);
...
}
exports = module.exports = function(io) {
return {
...
getPersonById: function(req, res, next) {
....
io.emit("Hello")
...
},
....
}
}
routes.j文件如下所示:
exports = module.exports = function(io) {
return {
emit: function() {
io.emit('hi', "Some stuff")
}
}
}
exports = module.exports = function(app, io) {
...
var user = require('./controllers/user')(io)
app.get({ path: '/users/:id', version: '1.0' }, user.getUserById);
...
}
exports = module.exports = function(io) {
return {
...
getPersonById: function(req, res, next) {
....
io.emit("Hello")
...
},
....
}
}
最后,我的user.js文件如下所示:
exports = module.exports = function(io) {
return {
emit: function() {
io.emit('hi', "Some stuff")
}
}
}
exports = module.exports = function(app, io) {
...
var user = require('./controllers/user')(io)
app.get({ path: '/users/:id', version: '1.0' }, user.getUserById);
...
}
exports = module.exports = function(io) {
return {
...
getPersonById: function(req, res, next) {
....
io.emit("Hello")
...
},
....
}
}
有没有更好的方法来组织这件事?我感觉我正在通过4个不同的文件处理io实例。我只需要一个可以在控制器内发出事件的单例实例。我在express.io中使用类似的东西: app.js
var router = require('./routes/router'),
express = require('express.io'),
app = new express();
app.http().io();
app.use(app.router);
app = router.index(app);
app.listen(3000);
/routes/router.js
exports.index = function(app){
var IndexIo = require(__maindir + '/routes/io/IndexIo');
app.io.route('page/action', IndexIo.action);
app.io.route('page/action2', IndexIo.action2);
return app;
})
/routes/io/IndexIo.js
exports.action = function(req){
doSomething();
req.io.emit('doSomething', {});
}
exports.action2 = function(req){
doSomething();
req.io.emit('doSomething', {});
}
你在用express.io吗?不。对旧socket.io进行恢复和普通