美文网首页
nodjs+express+mongo+websocket汽车之

nodjs+express+mongo+websocket汽车之

作者: pretty_rain | 来源:发表于2019-01-23 17:37 被阅读0次
  • 本项目是为了练习websocke全双工通信写的,运行之前必须安装nodejs环境、mongo数据库,然后用npm下载express、ejs、express-session、cookie-parser、socket.io、mongodb 模块
功能描述:

首页 、分类页 、汽车详情页 、聊天室页面 、登录页 、注册页 、个人中心

页面展示
image.png
image.png
image.png image.png
image.png
image.png
image.png

项目目录

image.png

代码

具体代码下载地址:https://github.com/prettyRain/qichezhijiaNodejs.git
这里只展示两个关键js后台代码具体代码参考github
app.js

/**
 * Created by prettyRain on 2019/1/22.
 */

var express = require('express');
var app = express();

app.use(express.static('./public'));
app.set('view engine','ejs');

var session = require('express-session');
var cookie = require('cookie-parser');
var router = require('./router/router.js');


app.use(session({
    secret: '12345',
    name: 'testapp',   //这里的name值得是cookie的name,默认cookie的name是:connect.sid
    cookie: {maxAge: 800000 },  //设置maxAge是80000ms,即80s后session和相应的cookie失效过期
    resave: false,
    saveUninitialized: true
}));

app.get("/",router.showIndex);

app.get('/categray',router.showCategray);

app.get('/goodsDetail',router.showGoodsDetail);

app.get('/regist',router.showRegist);
app.post('/doRegist',router.doRegist);
app.get('/login',router.showLogin);
app.post('/doLogin',router.doLogin);
app.get('/main',router.showMain);

app.get('/backLogin',router.backLogin);

app.get('/showChatroom',router.showChatroom);

app.get('/checklogin',router.checklogin);
//创建io公式
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.on('connection',function(socket){
    console.log("创建了一个连接");
    socket.on("fabiao",function(msg){
        console.log(msg);
        router.addMessage(msg.username,msg.content,function(){
            io.emit("zhanshi",{username:msg.username,content:msg.content});
        });
        
    })
})

server.listen(3000);

router.js

/**
 * Created by prettyRain on 2019/1/22.
 */

var md5 = require('../model/md5.js');
var db = require('../model/db.js');
var formidable = require('formidable');

var util = require('util');
/**
 * 首页
 * @param req
 * @param res
 * @param next
 */
exports.showIndex = function(req,res,next){
    if(req.session.login=="1"){
        res.render('index',{username:req.session.username,login:req.session.login});
        return;
    }
    res.render('index',{login:"-1"});
    

}

/**
 * 展示分类
 * @param req
 * @param res
 * @param next
 */
exports.showCategray = function(req,res,next){
    if(req.session.login=="1"){
        res.render('categray',{username:req.session.username,login:req.session.login});
        return;
    }
    res.render('categray',{login:"-1"});
}
/**
 * 展示商品详情
 * @param req
 * @param res
 * @param next
 */
exports.showGoodsDetail = function(req,res,next){
    if(req.session.login=="1"){
        res.render('goodsDetail',{username:req.session.username,login:req.session.login});
        return;
    }
    res.render('goodsDetail',{login:"-1"});
}
/**
 * 展示注册页面
 * @param req
 * @param res
 * @param next
 */
exports.showRegist = function(req,res,next){
    res.render('regist',{});
}
/**
 * 注册
 * @param req
 * @param res
 * @param next
 */
exports.doRegist = function(req,res,next){
    var form = new formidable.IncomingForm();
    
    form.parse(req, function(err, fields, files) {
    
        console.log(util.inspect({fields: fields, files: files}));
        var username = fields.username;
        var password = md5(fields.password);
        db.find("users",{username:username},function(err,result){
            if(result.length > 0){
                //用户名被占用
                res.send("-1");
                return;
            }
            db.insertOne('users',{username:username,password:password},function(err,result){
                if(err){
                    res.send("-2");
                    return;
                }
                req.session.username = username;
                req.session.login = "1";
                res.send("1");
            })
        })
    })
}
/**
 * 展示登录页面
 * @param req
 * @param res
 * @param next
 */
exports.showLogin = function(req,res,next){
    res.render('login',{});
}
/**
 * 登录
 * @param req
 * @param res
 * @param next
 */
exports.doLogin = function(req,res,next){
    var form = new formidable.IncomingForm();
    form.parse(req, function(err, fields, files) {
        
        console.log(util.inspect({fields: fields, files: files}));
        var username = fields.username;
        var form_password = md5(fields.password);
        db.find("users",{username:username},function(err,result){
            if(result.length > 0){
                var username = result[0].username;
                var password = result[0].password;
                if(form_password.toString().trim() == password.toString().trim()){
                    req.session.username = username;
                    req.session.login = "1";
                    res.send("1");
                    return;
                }
                //密码不正确
                res.send("-2");
                return;
            }
            //用户名不存在
            res.send("-1");
        })
    })
}
/**
 * 个人中心
 * @param req
 * @param res
 * @param next
 */
exports.showMain = function(req,res,next){
    
    if(!!req.session.login && req.session.login== '1'){
        res.render('main',{username:req.session.username});
    }else{
        res.render('index',{login:"-1"});
    }
    
}

/**
 * 退出登录
 * @param req
 * @param res
 * @param next
 */
exports.backLogin = function(req,res,next){
    req.session.username = '';
    req.session.login = "-1";
    res.render('index',{login:"-1"});
}

/**
 * 聊天室
 * @param req
 * @param res
 * @param next
 */
exports.showChatroom = function(req,res,next){
    db.find('message',{},function(err,result){
        if(err || result.length < 1){
            res.render('chatroom',{"data":"error"});
            return;
        }
        res.render('chatroom',{"data":"success","messages":result});
    })
}
/**
 * 检查是否已登录
 * @param req
 * @param res
 * @param next
 */
exports.checklogin = function(req,res,next){
    if(!!req.session.login && req.session.login=='1'){
        res.send({login:"1",username:req.session.username});
        return;
    }
    res.send({login:"-1"});
}
/**
 * 添加热聊数据
 * @param username
 * @param content
 * @param callback
 */
exports.addMessage = function(username,content,callback){
    db.insertOne('message',{username:username,content:content},function(err,result){
        callback();
    })
}

相关文章

  • nodjs+express+mongo+websocket汽车之

    本项目是为了练习websocke全双工通信写的,运行之前必须安装nodejs环境、mongo数据库,然后用npm下...

  • OpenGLES6-汽⻋碰撞

    汽⻋碰撞 判断是否碰撞上 ?汽车A的直径 > 汽车AB之间的间隔距离,则2车相撞了了。汽车A的直径 < 汽车AB之...

  • 光明财报难掩“汽车之家”长夜

    汽车行业陷入寒冬,大雪从2018年持续到了至今。在汽车行业艰难前行之时,汽车平台汽车之家却一路逆势增长,直到汽车之...

  • 2018-09-04

    安全驾驶之汽车停车技巧篇 --------------------------------------------...

  • 汽车销售技巧话术如何提高 汽车销售员卖车必备

    汽车销售技巧话术如何提高 汽车销售员卖车必备 汽车销售技巧话术之汽车营销流程 人生的成功95%看口才,测一测您的口...

  • 2018-12-08

    「汽车人」USMCA——美国全球汽车税下的新“保护伞” 汽车人杂志 百家号10-04 12:15 关注 利益集团之...

  • 汽车美容养护之汽车保养周期

    相信很多车友都知道汽车有分期保养一说,但具体每一个部件的保养公里数是多少,没有几位车主是具体了解的。在汽车美容行业...

  • 汽车基础知识之汽车参数

    1 车身参数 1.0 车身尺寸 长/mm 极端点间距离,前保险杠最凸出的位置,到车后保险杆最凸出的位置 宽/mm ...

  • 东南汽车-闪耀酷绮人生,翼起为梦舞动

    “有福之州、畅行东南”全国交广走进福州的活动,带领大家走进福州本地的汽车品牌——东南汽车的工厂!东南(福建)汽车工...

  • 2019*03*04 鸣笛

    汽车鸣笛 孩子大叫“太吵了” 呵呵 真有自知之明

网友评论

      本文标题:nodjs+express+mongo+websocket汽车之

      本文链接:https://www.haomeiwen.com/subject/ajrsjqtx.html