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

时间:2015-12-15 08:58:51

标签: node.js socket.io

我是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相关代码拆分成文件?它的最佳实践是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

仍然是不同的文件。在您的exports中使用module.exportsrequire,然后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文件中重复增长。

相关问题