摘要:前言熬了一晚上硬是磨出來(lái)了,更新到了上,善存一些小,不過(guò)這個(gè)版本的整體功能算是實(shí)現(xiàn)了。預(yù)留其余的就是可能善存的一些了圖片過(guò)大,需要在前端做圖片上傳壓縮前端代碼的一點(diǎn)問(wèn)題,不影響項(xiàng)目正常運(yùn)行遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接。
前言
熬了一晚上硬是磨出來(lái)了,更新到了GitHub上,善存一些小BUG,不過(guò)這個(gè)版本的整體功能算是實(shí)現(xiàn)了。
項(xiàng)目:UncleCatMySelf/InChat
地址:https://github.com/UncleCatMy...
雙端口,TCP/IP軟硬件通信、Web端通信聊天應(yīng)用
文字、圖片聊天
流程圖磨了兩天的Netty,因項(xiàng)目需要所以在整改一些東西,具體就不細(xì)說(shuō)了,剛剛好和這個(gè)項(xiàng)目相似就拿來(lái)練練手·······
先看看流程圖(我啥時(shí)候能畫(huà)出好一點(diǎn)的架構(gòu)圖呢?)
先說(shuō)TCP/IP軟硬件通信吧,這個(gè)相對(duì)容易理解,也是圖的右側(cè),加一個(gè)Handler去獲取數(shù)據(jù),硬件和服務(wù)器有對(duì)應(yīng)的協(xié)議,我這邊的協(xié)議是幀頭+ID+控制類型+數(shù)據(jù)+加密+幀尾,得到正確數(shù)據(jù)既連接為正常的,那就保持正常通信,否則一律殺死連接??刂祁愋臀覍?xiě)得比較粗糙,用switch,中間可能有數(shù)據(jù)的CRUD操作等,使用ScheduledFuture起一個(gè)新線程去執(zhí)行原生的JDBC,后面可以改為異步執(zhí)行(如果不需要實(shí)時(shí)的話,那就可以用JPA注入了。)
接著是聊天應(yīng)用的通信,還是一個(gè)自定義的Handler不過(guò)是Object,具體后面可以使用instanceof去做判斷,對(duì)于TextWebSocket類型的就做普通的文字聊天處理,而WebSocketFrame且同時(shí)也是BinaryWebSocketFrame的就做圖片處理,你可以直接返回給客戶端,也可以保存到本地,如果返回客戶端的話,對(duì)于ByteBuf而言需要加一個(gè)retain()方法,不然會(huì)報(bào)錯(cuò)的。
預(yù)留BUG其余的就是可能善存的一些BUG了
io.netty.handler.codec.CorruptedFrameException: Max frame length of 65536 has been exceeded. 圖片過(guò)大,需要在前端做圖片上傳壓縮 Uncaught TypeError: msg.substring is not a function at WebSocket.socket.onmessage (newChat.js:38) 前端代碼的一點(diǎn)問(wèn)題,不影響項(xiàng)目正常運(yùn)行 java.io.IOException: 遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接。 TCP客戶端連接主動(dòng)關(guān)閉,不影響,良性報(bào)錯(cuò)效果
效果在上面的視頻看到了?。?!(請(qǐng)移步公眾號(hào),這里給圖片)
還不去Star 然后自己泡一下?
地址:https://github.com/UncleCatMy...
項(xiàng)目名:UncleCatMySelf/InChat
如果本文對(duì)你有所幫助,歡迎關(guān)注本人技術(shù)公眾號(hào),謝謝。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77211.html
摘要:一個(gè)輕量級(jí)高效率的支持聊天與物聯(lián)網(wǎng)的通訊框架從月初到現(xiàn)在已經(jīng)大約已經(jīng)三個(gè)月了,由于一直沒(méi)有時(shí)間與精力很好的維護(hù)這個(gè)項(xiàng)目,心里一直有所歉意。希望本項(xiàng)目對(duì)你有所幫助,我的目標(biāo)暫定,一個(gè)小眾加物聯(lián)網(wǎng)的開(kāi)源通訊項(xiàng)目。 篇幅較長(zhǎng),感謝閱讀。 萬(wàn)事開(kāi)頭難 在我決定做開(kāi)源是因?yàn)樽陨砉ぷ鹘佑|到大多數(shù)的項(xiàng)目都是基于開(kāi)源大佬寫(xiě)的框架,自覺(jué)慚愧,工作以來(lái)一直忙于業(yè)務(wù)與功能實(shí)現(xiàn),多多少少做過(guò)的幾個(gè)項(xiàng)目也沒(méi)能抽...
摘要:而也因此引出了各種開(kāi)源的大框架,它們各有優(yōu)缺點(diǎn),其中大多數(shù)與分布式系統(tǒng)相關(guān)聯(lián)。而在網(wǎng)絡(luò)編程領(lǐng)域,或許才是真正的一枝獨(dú)秀它掌控著高級(jí)的能力,并將其隱藏在一個(gè)易于使用的之后。 Netty?。。?寫(xiě)過(guò)一段時(shí)間的代碼后,大多數(shù)人都會(huì)學(xué)到:直接使用底層的APi暴露了復(fù)雜性,并且引入了對(duì)往往供不應(yīng)求的技能的關(guān)鍵性依賴,當(dāng)然,學(xué)過(guò)Java的朋友或者其他語(yǔ)言也知道,面向?qū)ο蟮母拍睿河幂^簡(jiǎn)單的抽象隱藏底...
摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...
摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...
閱讀 2774·2021-09-24 10:34
閱讀 1876·2021-09-22 10:02
閱讀 2265·2021-09-09 09:33
閱讀 1469·2021-08-13 15:02
閱讀 3279·2020-12-03 17:10
閱讀 1193·2019-08-30 15:44
閱讀 2156·2019-08-30 12:58
閱讀 3238·2019-08-26 13:40