在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相关的代码分解成文件? 最好的做法是什么? 谢谢!
不同的文件仍然是这样。 使用exports
或module.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
文件中随着事物的增长重复。