码迷,mamicode.com
首页 > Web开发 > 详细

nodejs实现在线聊天室

时间:2018-08-27 15:26:10      阅读:692      评论:0      收藏:0      [点我收藏+]

标签:文件中   uniq   在线聊天   短信   聊天   git   操作   监听服务   https   

源码地址: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。

nodejs实现在线聊天室

标签:文件中   uniq   在线聊天   短信   聊天   git   操作   监听服务   https   

原文地址:https://www.cnblogs.com/qmdx00/p/9542309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!