我是NodeJS的新手。所以我用socket.io编写NodeJS应用程序。
我理解如何分离控制器。在我的应用中,我创建了:
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相关代码拆分成文件?它的最佳实践是什么?谢谢!
答案 0 :(得分:1)
仍然是不同的文件。在您的exports
中使用module.exports
或require
,然后app.js
。
也许制作一个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
文件,并且您的套接字设置也包含在内。在您的socketSetup.js
文件中重复增长。