【问题标题】:What is best practice for separating socket.io related code in NodeJS app?在 NodeJS 应用程序中分离 socket.io 相关代码的最佳实践是什么?
【发布时间】:2015-12-15 23:22:12
【问题描述】:

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

【问题讨论】:

标签: node.js socket.io


【解决方案1】:

不同的文件仍然是方式。使用exportsmodule.exports,然后在app.js 中使用require

也许可以创建一个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 文件中的内容不断增加,请重复此操作。

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多