Laravel 8+ LayIM 3.8 + GatewayWorker 開發的網頁聊天系統

洛辛發表於2021-02-15

Laravel 8+ LayIM 3.8 + GatewayWorker 開發的網頁聊天系統

新的改變

我們對之前的開源專案–極雲賦進行了重構,新版本的專案結構更為清晰,資料庫設計更為合理,程式語法更為簡潔,易於擴充維護。新版本不僅包含了舊版本的全部功能,我們還增加了如下幾點新功能,與時俱進:

  1. 前後端完全分離 ,本專案包含一個完整的 API 伺服器和兩個全新設計的客戶端( PC 客戶端和手機客戶端);
  2. 全新的右鍵選單;
  3. MySQL+MongoDB 雙資料庫配置,高效能的 MongoDB 負責儲存大量的聊天記錄和訊息記錄;
  4. 阿里雲簡訊;
  5. 阿里雲 OSS 儲存大檔案和圖片;
  6. 應用 https 和 wss 傳輸協議;

原始碼

專案截圖

新增好友
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

專案結構

  • app
    • Concole ——————————————————包含應用所有自定義的 Artisan 命令
    • Http
      • Controllers/Api ———————————————————-處理所有通過介面進入應用的請求
      • Middleware ————————————————————–中介軟體
      • Requests —————————————————————–請求驗證類
      • Resources —————————————————————介面資源類
    • Providers ———————————————————-服務提供者類
    • Services ———————————————————–服務類
  • Applications/LuoXun —————————————GatewayWorker配置檔案目錄
  • config —————————————————————-Laravel 配置檔案目錄
  • database
    • factories ———————————————————- 資料庫工廠目錄
    • migrations ——————————————————– 資料庫遷移檔案目錄
    • seeds ————————————————————– 資料填充目錄
  • public
    • plugins ——————————————————- 前端外掛目錄
    • layui ———————————————————- 把包含 LayIM 的 Layui 放在這裡
  • resources
    • css ———————————————————— 前端 CSS 目錄
    • js ————————————————————– 前端 JS 目錄
    • lang ———————————————————- 多語言設定目錄
    • views
      • mobile ————————————————————– 手機客戶端
      • pc ———————————————————————PC 客戶端
      • index.blade.php ————————————————– 首頁檢視
      • login.blade.php ————————————————— 登入檢視
      • reg.blade.php —————————————————– 註冊檢視
  • routes
    - api ---------------------------------------------------------------- 介面路由
    - web ---------------------------------------------------------------檢視路由
  • .env —————————————————— Laravel 全域性配置檔案

安裝使用

我們假設你的伺服器已經配置好了 Laravel 專案環境。

安裝擴充包

composer update

打包 css/js

npm install
npm run production

編輯配置檔案,把XXXX都填上

cp .env_example .env
vim .env

把包含 LayIM 的 layui 放在 /public 目錄下

修改 /resources/views/pc/app.blade.php 和 /resources/views/mobile/app.blade.php 中的域名

var domain = ‘{Yourdomain}/wss’;

配置 nginx,解決 wss 協議問題

#laravel 框架 nginx 配置檔案中的對根目錄的訪問修改為以下
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
location /wss {
    proxy_pass localhost:5210;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection “upgrade”;
    proxy_set_header Host $host;
}

生成資料加密祕鑰

php artisan key:generate

生成 jwt 令牌祕鑰

php artisan jwt:secret

資料庫遷移

php artisan migrate

填充使用者和群組賬號資料表

php artisan db:seed

上線專案

php artisan up

FAQ

  1. 為什麼專案中不包含 LayIM 檔案?
    LayIM 受國家計算機軟體著作權保護,未經官網正規渠道授權不能公開產品原始檔。當你獲得 LayIM 後把包含 LayIM 的 layui 放在 /public 目錄下即可。
  2. 為什麼沒有管理後臺?
    管理後臺直接運算元據表,與專案中的請求處理邏輯無關。使用 laravel-admin 可以在十分鐘內構建一個功能齊全的管理後臺。
  3. 有沒有配套文件?
    舊版本有配套文件,新版本配套文件還在編寫中。

捐贈

在這裡插入圖片描述

本作品採用《CC 協議》,轉載必須註明作者和本文連結
洛辛

相關文章