Node.js 在NodeJS应用程序中分离socket.io相关代码的最佳实践是什么?

Node.js 在NodeJS应用程序中分离socket.io相关代码的最佳实践是什么?,node.js,socket.io,Node.js,Socket.io,我对NodeJS是新手。因此,我正在使用socket.io编写NodeJS应用程序 我知道如何分离控制器。在我的应用程序中,我创建了: controllers/userCtrl.js controller/marketCtrl.js等。 在userCtrl.jscontroller中,我这样做: exports.create = function(req, res) { // Create user } // Other actions 在应用程序中,我使用它: // ... var

我对NodeJS是新手。因此,我正在使用socket.io编写NodeJS应用程序

我知道如何分离控制器。在我的应用程序中,我创建了:
controllers/userCtrl.js
controller/marketCtrl.js
等。 在
userCtrl.js
controller中,我这样做:

exports.create = function(req, res) {
    // Create user
}

// Other actions
在应用程序中,我使用它:

// ...
var userCtrl = require('./controllers/userCtrl');
app.post('/user', userCtrl.create);
// ...
用同样的型号。但是我在
app.js
中有很多与socket.io相关的代码,不知道如何从
app.js
中删除它(比如控制器):

var frontend = io.of('/frontend');
frontend.on('connection', function (client) {
logger.info('Someone connected to frontend socket');
client.on('join', function (message) {
    logger.info('In join event');
    var token = message.token;
    if (!token) {
        logger.debug('No usertoken provided. Sending login required');
        client.emit('join', {error: 103, message: 'Login required', data: null});
        return;
    }
//... etc.. 

我的问题是:如何将socket.io相关代码拆分成文件?它的最佳实践是什么?谢谢大家!

不同的文件仍然存在。使用
exports
module.exports
,然后在
app.js
中使用
require

也许可以创建一个
setup()
函数来接收app/http实例或socket.io中所需的任何其他内容,然后在app.js中的正确时间调用该函数

--socketSetup.js--

--app.js--

结果是一个更短、更可读的
app.js
文件,并且还包含套接字设置。随着
socketSetup.js文件中内容的增长,也要重复上述步骤。

看起来像是相同的问题:
'use strict';
var io = require('socket.io');
function setup( app, logger, whatever ){
  //do stuff here
}
module.exports = setup;
'use strict';
var express = require('express');
var socketSetup = require('./socketSetup.js');

var app = express();
//other express things

//setup the socket stuff
socketSetup( app, logger );