nodejs实如今线聊天室

源码地址:https://github.com/qmdx00/AszedRoom/tree/master/Aszed
前端

上线地址:http://119.23.243.252:3000/git

求star QAQgithub

用到的技术:express作后端服务,bootstrap实现前端ui,socket.io作服务端和客户端的通讯,mongodb存储数据。mongodb

首先用express工具建立express项目,目录结构以下:数据库

阿里云短信服务:https://dysms.console.aliyun.com/dysms.htm?spm=5176.2020520001.aliyun_sidebar.138.836e4bd3Ddkpdu#/overviewexpress

注册并申请签名和模板。bootstrap

在config里面建立smsConfig.js文件用来导出AccessKeyID和AccessKeySecret后端

再建立dbConfig.js导出mongodb的url和配置。数组

在socket文件夹中建立server.jscookie

导出io监听,在www启动文件中监听服务端

用mongoose模块操做mongodb数据库,建立Schema再建立model,经过model建立实例,例如注册功能的实现

再schemas文件夹中建立userSchema.js

 

const mongoose = require('mongoose');

module.exports = new mongoose.Schema({
    userName: {
        type: String,
        unique: true
    },
    userPwd: {
        type: String
    },
    userPhone: {
        type: String,
        unique: true
    },
    created: {
        type: Date,
        default: Date.now()
    }
}, {
    versionKey: false
});

 

在models文件夹中建立对应的userModel.js

const mongoose = require('mongoose');
const userSchema = require('../schemas/userSchema');

module.exports = mongoose.model('user', userSchema);

 

便可在路由中处理user用户模型。

在utils中建立util.js用来操做数据库,导出为一个对象

便可经过导出直接使用该方法。再添加路由逻辑便可。

 

 

验证码的逻辑:

后端生成随机的六位数的验证码,经过短信发送到用户手机,同时发送一份加密过的到客户端,经过加密用户输入的验证码匹配接受的后端加密后的验证码是否相等来判断验证码的正误。

在线人数统计逻辑:

处理socket.io的客户端链接方法,每链接一个客户端先获取cookie判断用户身份,再便利online数组查找是否在数组内,不在就push进去,再更新mongodb。

相关文章
相关标签/搜索