nodejs实现在线聊天室

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

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

求star QAQ

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

首先用express工具创建express项目,目录结构如下:

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

注册并申请签名和模板。

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

再创建dbConfig.js导出mongodb的url和配置。

在socket文件夹中创建server.js

导出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。

转载于:https://www.cnblogs.com/qmdx00/p/9542309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值