天天看點

可在廣域網部署運作的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動消息提醒、登入狀态、GIF動态表情

距上次GG V3.7版本的釋出,已經有50天了,這50天對于GG來說,是一個重大的飛躍。因為這段時間通過一些基于GG的實戰項目,發現了GG的很多bug和不足之處,我都一一做了修正,并增加了一些基礎且必須的功能。這次釋出的是GG V4.0版本,又稱為GG 2014。

  距上次GG V3.7版本(可在廣域網部署運作的QQ高仿版 -- GG叽叽V3.7,優化視訊聊天、控制更多相關細節)的釋出,已經有50天了,這50天對于GG來說,是一個重大的飛躍。因為這段時間通過一些基于GG的實戰項目,發現了GG的很多bug和不足之處,我都一一做了修正,并增加了一些基礎且必須的功能。這次釋出的是GG V4.0版本,又稱為GG 2014。

  記得在GG早期版本時,園子裡的吉日兄跟我留言說:"GG完全不能正式使用......",那時我還不是很服氣,後來當我基于GG開發正式項目時,才逐漸明白吉日兄說的是對的。但是,今天,我可以邀請吉日兄再來試試GG的最新版本了,因為現在GG的品質是過硬的。不信嗎?下載下傳個試試呗!

      想要直接下載下傳體驗的朋友請點選:“下載下傳中心”

一.GG V4.0 新增功能展現 

1.聊天記錄:支援本地儲存和伺服器端儲存兩種方式。

2.好友分組:新增/删除分組,修改分組名稱,改變好友的所屬分組。

3.托盤閃動:跟QQ完全一樣,當接收到消息時,托盤會閃動對應好友的頭像。點選頭像,将彈出與好友的聊天框。

4.登入狀态:線上、離開、忙碌、勿打擾、隐身。當修改自己的狀态時,好友能同步看到自己的最新狀态。

5.動态表情:聊天框支援插入GIF圖檔、動态表情,并播放動畫。

6.輸入提醒:像QQ一樣,當對方正在輸入消息時,我這邊的聊天框可以看到對方“正在輸入”的提示。

7.自動記錄:GG2014會自動記錄上次打開的主界面的位置、大小;最後一次打開的聊天視窗的大小;最後一次設定的字型的顔色、大小等。

8.打開聊天視窗時,自動顯示上次交談的最後一句話。(可以通過系統設定來關閉該功能)

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

  聊天記錄:

  

可在廣域網部署運作的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動消息提醒、登入狀态、GIF動态表情

  好友分組:

可在廣域網部署運作的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動消息提醒、登入狀态、GIF動态表情

  正在輸入:

可在廣域網部署運作的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動消息提醒、登入狀态、GIF動态表情

  系統設定:

可在廣域網部署運作的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動消息提醒、登入狀态、GIF動态表情

二.實作思路

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

1. 聊天記錄的本地存儲采用的是Sqlite資料庫,服務端存儲目前是在記憶體中虛拟的資料庫。

2. 從伺服器讀取聊天記錄,使用的是Remoting技術。IRemotingService 接口的GetChatRecordPage方法以及GetGroupChatRecordPage方法。

3. 好友分組的背後原理:User類的Friends字段,其值是類似這樣的 --  我的好友:10000,10001,1234;家人:1200,1201;同學:1300,1301

(1)通過分号區隔不同的分組

(2)通過冒号區隔分組名稱與好友清單。

(3)通過逗号區隔不同的好友ID。

(4)另外,User類還有個DefaultFriendCatalog字段,這個用來存儲預設分組的名稱(初始值為”我的好友“),預設分組的名稱可以被改變,但是不能被删除。(這一點也是完全模仿QQ的) 

4. 托盤閃動的實作主要集中于TwinkleNotifyIcon元件,無論是個人聊天消息還是組聊天消息,首先被push進TwinkleNotifyIcon,使其閃爍,當點選TwinkleNotifyIcon,再把消息提取出來顯示。

5. 輸入提醒的背後原理:

(1)當檢測到聊天輸入框的内容發生變化時(TextChanged事件),就發送一個InputingNotify類型的消息給對方,并控制兩個該消息的最小間隔為5秒。

(2)對方一旦收到InputingNotify通知,就立即顯示”正在輸入“的Label。

(3)如果對方連續10秒都再沒收到InputingNotify通知,則将将正在輸入的狀态改為false。(ChatForm的CheckInptingVisiable方法)

(4)當對方接收到聊天消息,立即将正在輸入的狀态改為false,然後,再等待下一個InputingNotify通知。

6.自動記錄功能,是使用本地檔案來記錄窗體的位置資訊的,詳見SystemSettings類的ChatFormSize、MainFormSize、MainFormLocation、Font等屬性。

7.打開聊天窗體時,顯示上次聊天的最後一句話:該功能是利用了User類的Tag字段來存儲最後一句話資訊。而且好友資訊(User類的執行個體)是會被持久化在本地檔案中的。

三.GG V4.0 源碼下載下傳

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

  内置測試帳号:10000、10001、10002、10003 ,密碼:1

關于GG的最新全貌介紹、以及如何部署、試用帳号等問題,我單獨寫了一篇文章,作為彙總,可參見 可在廣域網部署運作的QQ高仿版 -- GG2013概要。 

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

大家有什麼問題和建議,可以留言,也可以發送email到我郵箱:[email protected]。 

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

繼續閱讀