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。

相關文章
相關標籤/搜索