基于EasyTcp4Net開(kāi)發(fā)一個(gè)功能較為完善的去持久化聊天軟件
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
示例發(fā)消息給自己收到消息發(fā)送圖片消息發(fā)送中重連中發(fā)送失敗數(shù)據(jù)包結(jié)構(gòu)以及拆包定義數(shù)據(jù)包結(jié)構(gòu)數(shù)據(jù)包結(jié)構(gòu)定義了每次發(fā)送一個(gè)數(shù)據(jù)的完整的數(shù)據(jù)結(jié)構(gòu),我們將包體長(zhǎng)度定義在包頭中來(lái)解決粘包和斷包的問(wèn)題。 數(shù)據(jù)包我們采用了簡(jiǎn)單的序列化成byte數(shù)組的方式來(lái)發(fā)送。
我們?cè)诜?wù)端和客戶端根據(jù)我們定義的數(shù)據(jù)結(jié)構(gòu),來(lái)調(diào)用EasyTcp4Net提供的固定包頭來(lái)解析數(shù)據(jù)包 _easyTcpClient.SetReceiveFilter(new FixedHeaderPackageFilter(8, 0, 4, false)); 文本/圖片發(fā)送 我們可以定義消息基類,再拓展兩個(gè)消息類,一個(gè)文本消息,一個(gè)圖片消息
圖片消息
文本消息
我們還需要在界面中增加相關(guān)的文本和圖片的ViewModel 發(fā)送消息的時(shí)候,發(fā)送者可以立刻將消息添加到聊天界面,然后等待收到自己發(fā)送的消息從服務(wù)端發(fā)來(lái)的時(shí)候,根據(jù)狀態(tài)判斷消息是否發(fā)送成功,等待的時(shí)候可以將消息設(shè)置發(fā)送中的界面狀態(tài)顯示,這種發(fā)送消息邏輯和微信基本一致。 斷線處理 利用EasyTcp4Net提供的斷線的事件,可以非常方便的在服務(wù)端知道客戶端突然斷開(kāi)了,或者在客戶端知道和服務(wù)端連接斷開(kāi)了。 客戶端
主要是觸發(fā)了重連的機(jī)制。 服務(wù)端
主要是將該用戶從在線列表中移除。 總結(jié)總體來(lái)說(shuō)做一個(gè)聊天軟件需要考慮的細(xì)節(jié)比較多。 轉(zhuǎn)自https://www.cnblogs.com/qwqwQAQ/p/18330325 該文章在 2024/8/5 10:21:10 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |