基于nodejs的express和socket.io实时通讯项目结构配置

此博客主要是为了随笔记录express中集成应用socket.io的知识点,如有缺点或者更好的建议,希望大家能够提出来。

​​​​​​————————————————————————————————————————————————————————

1.为了快速搭建express的web应用。首先利用express的生成器生成项目目录(可详见w3c的express文档)。

2.使用npm install  socket.io --save 安装依赖

3.在app.js中引入socketIo

   var io = require('socket.io')();

    io.set('origins', '*:*'); // 解决跨域问题

  然后在文件最下面写入app.io = io;

4.在bin/www下面(这是能够在express应用socket.io的关键)

   var io = app.io; io.attach(server);

5.在项目下新建socket文件夹,创建socketIo.js(将socketJS封装)

var socketio = function(io) {
    io.on('connection', function (socket) {
        console.log('连接成功:' + socket.id)
}
module.exports = socketio

6.最后在app.js中可以引入socketIo.js,将3步骤的io传入,即可。

   var socketIo = require('./socket/socketIo')(io);

拓展---------------------------------------------------------------------------------------------------------------

1.如果我们需要在router中使用io怎么办呢?其实很简单。在app.js中   

   var indexRouter = require('./routes/index')(io);将io传入即可。index.js的改动如下:

var returnAdminRouter = function(io) {
    /* GET home page. */
    router.get('/qrcode', function(req, res, next) {
    return router;
}
module.exports = returnAdminRouter;

 2.有同学想区分不同的开发环境如何配置?其实很简单。

   2.1 首先在项目下,新建config文件夹,里面新建四个文件,分别为,config.js(读取环境配置信息),develop.js,test.js,prod.js(都是配置信息)

/**
 * 统一配置入口 config.js
 **/
var development=require('./development');
var production=require('./production');
var test=require('./test');

/**
 * 判断当前指示当前环境的常量返回对应配置
 * 默认返回开发环境的配置
 */
function config(){
    switch(process.env.NODE_ENV){
        case 'development':return development;break;
        case 'production':return production;break;
        case 'test':return test;break;
        default:return development;
    }
}
module.exports=config();

 /** * 环境配置入口 develop.js **/

var config = {
    env: 'development', //环境名称
    port: 3002,
    mysql_config: {
        host: '127.0.0.1',
        username: 'root',
        password: 'root',
        database:'mysql',
        port: 3306
    }
};
module.exports=config;

   2.2 在package.json中配置:

     "scripts": { "start": "set NODE_ENV=production&&node ./bin/www",

      "test": "set NODE_ENV=test&&node ./bin/www",

      "dev": "set NODE_ENV=development&&nodemon ./bin/www" },

  2.3 在bin/www文件里面替换代码,如下

   var config = require('../config/config')
   console.log('当前系统运行环境为:' + config.env + '     端口为:' + config.port)
   var port = normalizePort(config.port || '3000');

      这样运行不同环境脚本就可以咯

猜你喜欢

转载自blog.csdn.net/qq_35569020/article/details/85632049