用vue全家桶+koa2+soket.io +mysql寫一個聊天應用

大白熊發表於2018-03-01

vue-chat airchat

介紹

這是我的畢設專案,產品功能和頁面參照qq,微信,TIM,不完全一樣,有些是自己的想法。前後端都自己寫。 感覺是一個挺不錯的全棧入門專案,各種互動各種業務邏輯,不花哨,但實用。

對node(koa)和vue學習會挺有幫助,現在開源出來,接下去將繼續不斷完善?歡迎star

更新: electron-vue-chat:vue-chat的Electron桌面版本專案地址

正在寫react版本的?

技術棧:

前端vue,vue-router,vuex ,vue-cli和axios,scss,用rem做了移動端適配,沒有用第三方元件。 後端用koa2,用gulp構建工具實現自動重新整理後端程式碼執行。 資料庫用mysql,基於Token的jwt鑑權機制,用socket.io做雙向通訊;

github地址

vue-chat

線上地址

點選線上檢視

歡迎大家註冊登入,加這個群聊天? 搜群名稱: 專案交流群

群聊

也可以加我為好友,使用者名稱: hxvin

也可以註冊兩個賬號在兩個不同瀏覽器自己尬聊啦 ?

專案展示

  • 系統組成

image

image
image
image

image

image

todo

2018.01.13 開始

  • 登入
  • 註冊
  • 登出
  • 彈窗,提示等元件
  • 機器人智慧聊天回覆
  • 私聊
  • 群聊

2018.02.01

  • 使用者資料卡
  • 加好友及驗證好友請求
  • 好友請求通知
  • 刪除好友
  • 未讀訊息提示

2018.02.10  吐槽一下,不得不佩服qq,微信的使用者體驗,功能細節挺多。。。。。

  • 搜尋使用者,群組
  • 建立群
  • 群資料卡
  • 加群
  • 退群
  • 修改備註

2018.02.11

  • 釋出到線上
  • 修改個人資訊

2018.03.02

  • 收到新增好友請求底部tab紅點提醒

2018.03.20  收拾掉不少bug :-)

  • 遷移成Electron桌面版本的,支援mac和win環境。 (Electron版本將於答辯完開源)

已開源:Electron桌面版本專案地址

2018.03.25

  • 通訊錄展示
  • 聊天發表情
  • 聊天發圖片
  • 支援聊天程式碼美化,md語法
  • 使用者上傳頭像
  • 效能優化,redis做快取
  • 實現react版本的

下載到本地開發環境跑

本次開發我用了三個git分支,分別是主分支master ,開發分支dev , 線上分支online,如果你要fork到你的本地跑,請fork master分支 。

(注意下到本地後如果要體驗soket.io通訊互聊,用兩個瀏覽器各開啟一個賬號,不能用同一個瀏覽器,因為我用localstorage快取賬戶資訊)

Fork 或者 下載本專案

然後進入本專案的資料夾,把vue-chat/server/init/sql 的 airchat.sql檔案 拉到你的msyql客戶端 run一下生成資料庫(我使用的是mac下的 Sequel Pro 挺好用的,當然你用其他方式也可生成資料庫也可)

npm i
複製程式碼
npm run dev
複製程式碼
cd server 
複製程式碼
npm i
複製程式碼

接著下面兩條命令執行一條就行,看著選;(如果想要修改後端程式碼即時儲存重新整理,用第一條;如果像想用chrome進行debug除錯,用第二條)

npm run start  
複製程式碼
npm run dev
複製程式碼

打包上線,讓所有人都能用到你的產品(非必須)

打包上線前需要對master分支的程式碼做一些修改。具體怎麼修改以及後續如何打包上線,請看我單獨寫的一篇文章vue-chat 打包上線小記,希望對你有幫助。

老習慣,程式碼註釋比較詳細,需要註釋而沒有註釋的我也儘快補上; 後面也會寫幾篇部落格來詳細介紹本專案,希望更好的幫助到入門的小夥伴(大神請略過,或者給些指導建議?)

如果對您有幫助,希望給個start,鼓勵我繼續更新^ ^

開發目錄

├── LICENSE
├── README.md
├── build
│   ├── build.js
│   ├── check-versions.js
│   ├── logo.png
│   ├── utils.js
│   ├── vue-loader.conf.js
│   ├── webpack.base.conf.js
│   ├── webpack.dev.conf.js
│   └── webpack.prod.conf.js
├── config
│   ├── dev.env.js
│   ├── index.js
│   └── prod.env.js
├── dist  //打包後的靜態資源
│   ├── index.html
│   └── static
├── index.html
├── package-lock.json
├── package.json
├── server  // 後端程式碼
│   ├── config.js
│   ├── controllers
│   ├── gulpfile.js
│   ├── index.js 
│   ├── init  //資料庫初始化(sql檔案也在這)
│   ├── middlewares 
│   ├── models
│   ├── package-lock.json
│   ├── package.json
│   ├── routes
│   └── utils 
├── src  //前端程式碼
│   ├── App.vue
│   ├── assets
│   ├── components
│   ├── main.js
│   ├── pages
│   ├── router
│   ├── store //vuex在這
│   └── utils
└── static
複製程式碼

材料

自己總結的

web移動端適配方案

vue-chat 打包上線小記

token,Json web token(jwt)

web移動端頁面怎麼除錯

本地mysql客戶端連線centos的資料庫

文章都在我的部落格上,歡迎star我的部落格?

第三方的(在此感謝)

socket.io英文文件

socket.io中文文件

socket.io in github

socket.io-client in github

聊天機器人api

License

MIT

相關文章