這是一款響應式開源的 web 即時聊天應用,該應用使用全新技術構建,前端使用element-plus
+vue3
+vite
+ts
+pinia
+socket.io
+unocss
等開發,後端使用nodejs
+express
+socket.io
+express-jwt
等開發,資料庫使用mysql
,可自定義聊天主題,支援圖片、視訊等檔案傳送,檔案儲存方面還支援對接相容 AWS s3 的物件儲存平臺,只需修改相應配置即可將檔案儲存到物件儲存,能夠很方便的進行二次開發和整合,也很適合新手交流學習
專案地址
- gitee:https://gitee.com/lingshulian/vue3-socket-chat
- github:https://github.com/lingshulian/vue3-socket-chat
專案列表
客戶端專案
- chat-client 支援傳送圖片、視訊、token許可權登入,響應式聊天頁面,可自定義主題,程式碼結構清晰、易上手
服務端專案
- chat-service 支援 jwt 認證,聊天許可權認證, s3 物件儲存,提交資料校驗等,程式碼結構清晰、易上手
資料庫
- chat-db
專案截圖
功能列表
主功能 | 功能說明 | web |
---|---|---|
登入 | jwt token 授權認證 | √ |
註冊 | 傳送自動獲取驗證碼註冊 | √ |
訊息提醒 | 聲音、彈窗提示 | √ |
使用者列表 | 目前獲取的是所有使用者列表 | √ |
切換主題 | 可隨心修改和切換主題 | √ |
傳送視訊 | 支援物件儲存 | √ |
傳送表情 | 動態、靜態表情 | √ |
傳送圖片、檢視大圖 | 支援物件儲存 | √ |
標記未讀訊息 | 自動標記 | √ |
技術棧
前端 | 描述 | 學習網站 |
---|---|---|
Vue3 | 漸進式 JavaScript 框架 | https://v3.cn.vuejs.org/ |
TypeScript | JavaScript 的一個超集 | https://www.tslang.cn/ |
Vite | 前端開發與構建工具 | https://cn.vitejs.dev/ |
Element Plus | 基於 Vue 3,面向設計師和開發者的元件庫 | https://element-plus.gitee.io/zh-CN/ |
Pinia | 新一代狀態管理工具 | https://pinia.vuejs.org/ |
Vue Router | Vue.js 的官方路由 | https://router.vuejs.org/zh/ |
Uno css | 即時按需原子 CSS 引擎 | https://github.com/unocss/unocss |
後端 | 描述 | 學習網站 |
---|---|---|
express | 基於 Node.js 平臺,快速、開放、極簡的 Web 開發框架 | https://www.expressjs.com.cn/ |
socket.io | 支援及時、雙向與基於事件的交流 | https://socket.io/ |
環境準備
- 服務端:node.js(版本建議:>= v14.17.3)、相容s3的物件儲存(用於儲存圖片、視訊等檔案)
- web端:node.js(版本建議:>= v14.17.3)
- 資料庫:mysql(版本建議:>= v8.0,可匯入sql檔案即可)
拉取專案
git clone https://gitee.com/lingshulian/vue3-socket-chat
基本目錄
vue3-socket-chat
├──chat-client // web端專案
├──chat-service // 服務端專案
├──chat-db // 資料庫
啟動專案
web端
採用按需匯入元件、css、icon的方式進行構建,首次執行時編譯時間可能較長,但該方式不僅能夠提高開發效率,在打包後還能夠大大減少專案體積,是一種很好的開發方式
- 進入web端目錄
cd vue3-socket-chat/chat-client
- 安裝依賴
npm install
- 執行專案
npm run dev
- 打包專案(動態表情佔14M多,程式碼體積不到1M)
npm run build
資料庫
這裡我們使用的是 MySQL Front
匯入資料表,具體可根據您的使用習慣來匯入相應資料表
- 建立並連線好資料庫
匯入使用者表
- 進入MySQL Front 選擇
檔案 -> 匯入 ->SQL檔案
- 進入MySQL Front 選擇
- 選擇
vue3-socket-chat/chat-db/user.sql
匯入即可
匯入聊天記錄表
- 選擇
vue3-socket-chat/chat-db/chat.sql
匯入即可
- 選擇
服務端
- 進入服務端專案
cd vue3-socket-chat/chat-service
- 安裝依賴
npm install
- 配置資料庫
進入 vue3-socket-chat/chat-service/config.js
進行如下配置
// 資料庫配置
dbConfig: {
host: "localhost",
user: "lingshulian", // 資料庫登入使用者
password: "lingshulian.com", // 資料庫登入密碼
database: "lingshulian" // 資料庫名稱
}
- 配置物件儲存(不使用傳送檔案功能可跳過該步驟)
專案所使用的儲存平臺為 稜束鏈物件儲存,該儲存平臺最大的優點就是儲存成本低,不管是儲存空間還是使用流量都遠低於市場所有物件儲存平臺,活動期間物件儲存空間低至0.06元/GB
,流量更是低至0.05元/GB
,擁有穩定可靠的儲存能力,傳輸速度快,而且境外傳輸免流,是各大站長、企業、個人不二之選,有興趣的話可戳 www.lingshulian.com 官網瞭解下
獲取
地域
和端點
- 登入 稜束鏈儲存桶列表,點選目標儲存桶右側的
配置
按鈕,即可在桶配置頁的桶資訊區域獲得相應桶的地域
和端點
- 登入 稜束鏈儲存桶列表,點選目標儲存桶右側的
s3Config: {
config: {
credentials: {
accessKeyId: 'ff6c3c04ea43b9811ef1f9132a5a05fe', // 上述獲取的secretId
secretAccessKey: 'e0a4095791261062f478767c60fdc9684f21524a0b5f9f0f4c2e0d39cecb6ba4' // 上述獲取的secretKey
},
endpoint: 'https://s3-us-east-1.ossfiles.com', // https:// + 上述獲取的的端點
region: 'us-east-1' // 上述獲取的地域
},
path: 'chat', // 上傳的目錄,可自定義
bucket: "lingshuliantest" // 上述建立的儲存桶
}
- 啟動服務
node app.js
測試
開啟瀏覽器輸入 http://localhost:3000 即可,以下提供幾個預設測試賬號
- 賬號:123@lingshulian.com,密碼:123456
- 賬號:456@lingshulian.com,密碼:123456
- 賬號:789@lingshulian.com,密碼:123456
瀏覽器支援
本地開發推薦使用 Chrome 80+
瀏覽器
支援現代瀏覽器, 不支援 IE