使用NodeJS & SocketIO & Express & EJS & MongoDB打造多人線上聊天室。 ...
項目背景
這個項目主要是為了玩玩NodeJS,項目的方向大概是做出類似QQ的線上聊天系統。想要線上體驗可以點擊線上演示。
項目使用PM2進行部署和管理,功能在不斷的迭代開發中。如果你覺得這個項目比較有趣,或者能對你有所幫助,歡迎給個Star。
項目地址:https://github.com/bergwhite/nodejs-chat
PS: 最近找工作,北京的歡迎聯繫。另外之前做過一個基於Vue全家桶二次開發的V2EX社區 https://github.com/bergwhite/v2ex-vue。
項目目錄
├─bin
│ www // 啟動express
├─database
│ index.js // MongoDB
├─public // 靜態文件
│ css
│ index.css // 首頁CSS
│ js
│ index.js // 與socket服務進行通訊(關鍵文件)
| socket-server.js // socket服務(關鍵文件)
│ img
├─routers
│ index.js // 頁面路由
├─view
│ error.ejs // 錯誤頁
│ index.ejs // 首頁
│ userCenter.ejs // 用戶中心(規劃中)
│ userList.ejs // 用戶列表(規劃中)
├─app.js // express
├─package.json // npm包
路由
目前只有/目錄和/room/:id正式使用了,其他路由的頁面還在迭代開發中。
/ // 首頁
/user // 用戶列表
/user/:id // 用戶中心
/user/:id/register // 註冊(JSON)
/user/:id/login // 登陸(JSON)
/user/:id/logout // 註銷(JSON)
/user/:id/info // 用戶資料(JSON)
/room/:id // 指定聊天室
開始安裝
使用之前,請在package.json中修改MongoDB的安裝路徑(--dbpath)。
git clone https://github.com/bergwhite/nodejs-chat // 克隆項目到本地
cd nodejs-chat // 進入項目目錄
npm install // 安裝依賴
npm run build // 構建線上代碼
npm run mongod // 啟動MongoDB服務
npm run start // 啟動聊天室服務並啟動網站
項目演示
目前項目存在一個已知的bug,表情包無法在div模擬的輸入框中插入(修複中)。
匿名聊天
用戶聊天
成員&房間
離線通知
更多房間
房間獨立
已上線功能
- 跨瀏覽器,跨地域聊天(SocketIO自帶技能)
- 首次進入會顯示歡迎信息
- 發送空消息會進行提示
- 直接發送消息預設昵稱為“神秘人”
- 發送消息後會清空當前輸入框內容,然後焦點回到消息輸入框
- 添加用戶名後會成為新用戶,然後告知全房間人有新用戶加入
- 可以創建不同的房間,不同的房間的聊天是相互獨立的
- 顯示當前房間的線上用戶(設置了用戶名的)
- 顯示目前所有打開的房間
- 用戶(設置了用戶名的)離線會通知所有房間內的成員
- 壓縮線上代碼,加快訪問速度
- ...
待上線功能
用戶名
- 統計匿名用戶
- 支持一鍵隨機獲取用戶名
頭像
- 訪客使用預設頭像
- 新用戶(設置了用戶名的)隨機獲得一個頭像
- 新用戶換頭像可以從預設的一組頭像中選擇
- 是否支持上傳頭像還在考慮中(安全性問題)
聊天
- 支持多組豐富的表情包
- 是否支持上傳圖片還在考慮中(安全性問題)
資料庫
- 對接MongoDB,新用戶(設置了用戶名的)設置密碼後,將從臨時用戶轉變為正式用戶
項目缺陷
- 界面醜(等功能完善了再考慮)
- 表情包無法在div模擬的輸入框中插入(修複中)
- ...