web即時聊天系統的實現
第【3】頁
項目需求分析
現在纔來進行分析爲了大概對需要的知識進行預測,明確項目的大略內容,畢竟項目需求是我自己提出來的,具體的需求在我內心已經知曉。進行需求分析並羅列,是爲了明確目標,避免在做的過程中遺漏和將需求做大的情況。
首先,本項目不是單純的類似qq的即時通訊,而是社交網站的聊天功能。
項目功能
- 註冊、登錄功能
- 私聊功能,可以通過添加好友或者關注的用戶進行私聊,聊天記錄保存
- 公屏聊天功能,聊天記錄不保存
- 羣聊、粉絲支援團羣聊天,粉絲羣聊成員名單,通過關注和同意加入可參與羣聊
- 支持圖片發送,表情
- 消息推送,如果用戶在離線收到消息,會在登錄系統時推送給用戶
這是本項目最終實現的功能的要求,也許做到最後會有所更不同,不過系統會迭代的,有機會再說吧。
項目準備
根據現有javaEE知識(我的學校課程只教授了javaEE相關的知識),劃分一下職能,明確需要完成的任務
- 數據庫
- 數據庫的設計與創建
- 數據庫
- 服務器
- 數據庫訪問對象(DAO)
- 業務邏輯處理
- 控制器
- 通訊服務服務器端模塊
- 客戶端
- 前端交互界面(UI)
- 邏輯處理
- 交互組件
- 通訊服務客戶端模塊
本系統前後端分離,數據交互使用JSON爲載體(json獨立於平臺,前臺JavaScript就能直接處理數據了,也不用寫解釋器,比XML方便,後臺語言都對json支持)
因爲我目前爲止也不是清楚具體的流程是怎樣的,摸索着做着先,做出來的東西估計也得修修改改纔可能接近需求,爲了較少踩坑的次數,故纔有這次的項目設計記錄。按照既定思維,既然對需求有了大致的瞭解,那就是從數據庫開始入手,具體會在實現篇記錄。
傳輸數據格式
//上一篇的前端發送的通訊數據格式大致如下
{
"username":"user", //消息發送者
"to":"xxxx", //消息需要推送對象
"msg":"message", //消息發送內容
"type":2, //消息類型
"time":"xxxx-xxxx-xxxx-xxxx" //發送時間
}
//type類型以後再進行詳細規定
項目需要的框架
提及的都可以來了解一下,畢竟真正做起來需要用到什麼技術也很難預測。
前端
我比較喜歡自己寫css3代碼來進行UI設計,boostrap不是很符合我的口味,使用原生JavaScript結合HTML5、CSS3編寫組件。
不過,使用框架就比較省事,推薦使用boostrap,boostrap中文網:https://www.bootcss.com/,boostrap教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html
而Node.js,Vue,React、Angular 2 等,這些前端框架有興趣可以看看,如果走前端路線的,這些框架是必學一個的。
後端
servlet加jsp是基礎的了,不過現在一般不用這個設計了,不僅麻煩而且工程量巨大,使用框架就很好的解決了一些坑
例如:
- springMVC+Hibernate
- struts+spring+hibernate百度百科
依賴管理
- maven:這個很好的解決了到處下載jar包的坑,使用maven可以自動導入jar包,maven依賴查詢:https://mvnrepository.com/,教程:https://www.runoob.com/maven/maven-tutorial.html
數據庫
- 採用結構化數據語言SQL語句,搭載MySQL數據庫管理系統
- mongDB非結構化數據庫,可能會使用他進行聊天記錄數據的存儲
- Redis非結構化數據庫,用來輔助數據存儲
數據交互格式
- json
開發工具與運行環境
- MyEclipse:我使用MyEclipse進行後端開發的
- sublime:我使用sublime文本編輯器編寫HTML、css3、JavaScript
- MySQL數據庫管理系統、Navicat Premium可視化界面
- 前端運行環境web服務器:Apache或者Nginx
- 後端運行環境應用服務器:weblogic、Tomcat等等
搭建運行環境:嫌麻煩的話可以使用集成環境phpstudy,安裝包下載:https://www.xp.cn/
因爲我們需要使用基於java語言的,所以需要用到應用服務器weblogic或者TomCat
至於Web服務器和應用服務器的區別,可自行百度
[2019-10-27]