在NodeJS应用程序中分离socket.io相关代码的最佳做法是什么?

我是NodeJS的新手。 所以我正在用socket.io编写NodeJS应用程序。

我明白如何分开控制器。 在我创build的应用程序: controllers/userCtrl.js controller/marketCtrl.js等。而在userCtrl.js控制器中,我是这样做的:

 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相关的代码分解成文件? 最好的做法是什么? 谢谢!

不同的文件仍然是这样。 使用exportsmodule.exports ,然后只require在您的module.exports

也许可以创build一个setup()函数,它接受一个app / http实例,或者你的socket.io中的其他东西,然后在app.js中正确的时候调用这个函数。

– socketSetup.js –

 'use strict'; var io = require('socket.io'); function setup( app, logger, whatever ){ //do stuff here } module.exports = setup; 

– app.js –

 'use strict'; var express = require('express'); var socketSetup = require('./socketSetup.js'); var app = express(); //other express things //setup the socket stuff socketSetup( app, logger ); 

结果是一个更短和更可读的app.js文件,并且您的套接字设置也包含app.js 。 在socketSetup.js文件中随着事物的增长重复。