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

前言

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

項目:UncleCatMySelf/InChatjava

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

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

文字、圖片聊天服務器

流程圖

磨了兩天的Netty,因項目須要因此在整改一些東西,具體就不細說了,剛恰好和這個項目類似就拿來練練手·······架構

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

詳解

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

圖片描述

圖片描述

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

圖片描述

圖片描述

預留BUG

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

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/InChat


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

相關文章
相關標籤/搜索