1. 程式人生 > >nodejs實現在線聊天室

nodejs實現在線聊天室

erp 路由 結構 監聽 const mongodb conf 處理 bsp

源碼地址: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實現在線聊天室