可在廣域網部署運行的QQ高仿版 -- GG嘰嘰V3.2,增加離線消息、離線文件功能(源碼)


  (幾句題外話:雖然就如何將GG發展為一個有商業價值的產品,我還沒有很清晰明確的思路,但是從GG發布以來,通過GG認識了一些朋友,也接了一些小單子,賺了一點小錢。有了一點甜頭,目前和2、3個好朋友一起做做小項目也是不錯的,這未嘗不是一條養家糊口之路了?呵呵)

  距離上次更新(GG嘰嘰V3.0,完善基礎功能)正好有1個月了,在這個月中,我主要為GG增加了離線消息和離線文件的功能。之所以將這兩個功能提前實現,是因為至GG發布以來,就有很多朋友問我在GG的基礎上如何實現離線消息和離線文件。看來作為一個能用的IM軟件,離線消息和離線文件是必備的基礎功能了。

一.GG V3.2 新增功能展現 

(1)離線消息。

(2)離線文件。

(3)以前功能的幾個bug修改。

      廢話不多說,還是先上圖。

  離線消息:

      

  發送離線文件:

      

  離線文件發送完成、接收完成:

  

 

二.實現思路

  雖然提供了源代碼,但是,我還是想將主要的思路列一下,這樣,大家理解起源碼來,會節省更多的時間。

1. GG V3.2仍然使用的是在內存虛擬的數據庫VirtualDB類,並且在其中增加了兩個表:offlineMessageTable、offlineFileTable,分別用於存儲離線消息和離線文件條目信息。

    如果使用真實的數據庫,移植也是很簡單的,只需要將VirtualDB的所有方法重寫,並與真實的數據庫交互即可。

2. 在服務端增加了OfflineMessageController類,用於管理離線消息。

3. 在服務端增加了OfflineFileController類,用於管理離線文件。注意:GG將要中轉的離線文件是保存在服務端運行目錄下的OfflineFiles文件夾下(可在OfflineFileController源碼中修改這個路徑)。

4. 需特別提醒是,網盤功能和離線文件功能的實現都用到了一個非常重要的字段,TransferingProject的Comment屬性:

(1)TransferingProject的Comment屬性對應着方法BeginSendFile(用於請求發送文件)的comment參數。

(2)在網盤的功能中,comment用於表示上傳或下載時存儲的路徑,GGLib項目中的Comment4NDisk靜態類用於支持這一點。

(3)在離線文件功能中,comment用於表示發送者或接收者的UserID,GG.Core項目中的Comment4OfflineFile靜態類用於支持這一點。

5.離線消息基本邏輯要點:通過預定IRapidServerEngine的CustomizeController屬性的TransmitFailed事件,來取得所有轉發失敗的消息,並只關注其中的聊天消息。

6.離線文件基本邏輯要點:

(1)當客戶端登錄成功並完成初始化后,會向服務器發送兩個請求消息(位於MainForm的MainForm_Load方法):InformationTypes.GetOfflineMessage、InformationTypes.GetOfflineFile。

(2)服務端接收到上述兩個請求后,會調用OfflineMessageController和OfflineFileController來分分別處理。(位於CustomizeHandler類的HandleInformation方法)

(3)無論客戶端(作為接收者)是接收完了離線文件、還是拒絕了離線文件,服務端都會發送一個InformationTypes.OfflineFileResultNotify消息通知離線文件的發送方。

 

三.GG V3.2 源碼下載

  下載最新版本,請轉到這里。 

注:GG使用VS2010編譯生成的GG.exe文件,這個文件經常被新毒霸誤報為病毒,所以,這次發布的壓縮包中我把客戶端生成的GG.exe刪除了,大家可以自己編譯生成它。

 

關於GG的最新全貌介紹,我單獨寫了一篇文章,作為匯總,可參見 可在廣域網部署運行的QQ高仿版 -- GG2013概要。 

歡迎和我探討關於GG2013的一切,我的QQ:2027224508,多多交流!  

大家有什么問題和建議,可以留言,也可以發送email到我郵箱:ggim2013@163.com。 

如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM