Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 诺德斯和索克蒂奥。如何组织公开SocketIO实例_Node.js_Socket.io - Fatal编程技术网

Node.js 诺德斯和索克蒂奥。如何组织公开SocketIO实例

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

我有一个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 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进行恢复和普通