據說快七夕······git
不對,這不是今天的主題,嘿嘿。 今天說說一個小的網頁聊天室,功能以下
羣聊無限制github
記錄用戶羣聊信息數據庫
下次登陸顯示聊天曆史緩存
消息發送速度(光速)安全
聊天曆史顯示(可配置最近10條)多線程
若是你以爲還不夠?那麼下一個組件可能會更加知足你哦!不過本次先介紹一下此次咱們的幾個功能的具體實現還有個人一些思路。
分割線 箭頭 動態
對於各位大神來講,實現一個實時通訊的聊天頁面沒有什麼難度,不過加一些具體的功能可能就須要麻煩一點了。併發
本次我選擇SpringBoot2.0.2還有Netty4.1.28這兩個版原本結合使用。 SpringBoot集成了WebSocket因此開發通訊流比較簡單,Netty是一個多線程可高併發的框架,使用netty能夠減小不少對於消息流的安全等處理。 那麼聊天系統最重要的就是消息的實時推送,因此不要在消息的處理中作太多操做,但是若是要記錄歷史消息,就必定涉及數據庫的CRUD操做,須要怎麼處理呢? 我一開始想到了定時器,我先注入一個臨時緩存,存儲每一個用戶的消息(在Netty消費信息的時候),而後天天固定的時間去跑定時器(對緩存數據進行數據庫存儲,清空臨時緩存),但是若是個人定時時間是晚上12點,那麼用戶早上聊天的信息,中午從新登陸的時候仍是沒有的。 因而我又想到了異步任務,可是要何時去執行呢? 由於每次要最新的聊天曆史,那麼我暫時想到的是每一個用戶離開聊天室的時候,針對於它們的聊天記錄進行異步執行。 好在SpringBoot對於異步任務的兼容也很好處理。 以後我用Freenarjer組件,引用頁面爲模板,將歷史記錄的最新10條與模板一塊兒加載爲頁面! 這樣一個小小的聊天室就完成啦! 版本不一樣可能會有相關的代碼改動
老規矩!框架
GitHub地址:https://github.com/UncleCatMySelf/SBToNettyChat異步
名稱:UncleCatMySelf/SBToNettyChatide