不發不行!Netty集成文字圖片聊天室外加TCP/IP軟硬件通信

前言

熬了一晚上硬是磨出來了,更新到了GitHub上,善存一些小BUG,不過這個版本的整體功能算是實現了。

項目:UncleCatMySelf/SBToNettyChat

地址:https://github.com/UncleCatMy...

雙端口,TCP/IP軟硬件通信、Web端通信聊天應用

文字、圖片聊天

流程圖

磨了兩天的Netty,因項目需要所以在整改一些東西,具體就不細說了,剛剛好和這個項目相似就拿來練練手·······

先看看流程圖(我啥時候能畫出好一點的架構圖呢?)
圖片描述

詳解

先說TCP/IP軟硬件通信吧,這個相對容易理解,也是圖的右側,加一個Handler去獲取數據,硬件和服務器有對應的協議,我這邊的協議是幀頭+ID+控制類型+數據+加密+幀尾,得到正確數據既連接爲正常的,那就保持正常通信,否則一律殺死連接。控制類型我寫得比較粗糙,用switch,中間可能有數據的CRUD操作等,使用ScheduledFuture起一個新線程去執行原生的JDBC,後面可以改爲異步執行(如果不需要實時的話,那就可以用JPA注入了。)

圖片描述

圖片描述

接着是聊天應用的通信,還是一個自定義的Handler不過是Object,具體後面可以使用instanceof去做判斷,對於TextWebSocket類型的就做普通的文字聊天處理,而WebSocketFrame且同時也是BinaryWebSocketFrame的就做圖片處理,你可以直接返回給客戶端,也可以保存到本地,如果返回客戶端的話,對於ByteBuf而言需要加一個retain()方法,不然會報錯的。

圖片描述

圖片描述

預留BUG

其餘的就是可能善存的一些BUG了

io.netty.handler.codec.CorruptedFrameException: Max frame length of 65536 has been exceeded.
圖片過大,需要在前端做圖片上傳壓縮

Uncaught TypeError: msg.substring is not a function at WebSocket.socket.onmessage (newChat.js:38)
前端代碼的一點問題,不影響項目正常運行

java.io.IOException: 遠程主機強迫關閉了一個現有的連接。
TCP客戶端連接主動關閉,不影響,良性報錯

效果

效果在上面的視頻看到了!!!(請移步公衆號,這裏給圖片)
圖片描述圖片描述
圖片描述圖片描述圖片描述

圖片描述

圖片描述

還不去Star 然後自己泡一下?

地址:https://github.com/UncleCatMy...

項目名:UncleCatMySelf/SBToNettyChat


如果本文對你有所幫助,歡迎關注本人技術公衆號,謝謝。
圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章