1. 程式人生 > >可在廣域網部署執行的QQ高仿版 -- GG2014 完美版!新增支援:聊天記錄、好友分組、托盤閃動訊息提醒、登入狀態、GIF動態表情

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

  距上次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.開啟聊天視窗時,自動顯示上次交談的最後一句話。(可以通過系統設定來關閉該功能)

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

  聊天記錄:

  

  好友分組:

  

  正在輸入:

  

  系統設定:

  

二.實現思路

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

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]。 

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

相關推薦

廣域網部署執行QQ仿 -- GG2014 完美新增支援聊天記錄好友分組托盤閃動訊息提醒登入狀態GIF動態表情

  距上次GG V3.7版本()的釋出,已經有50天了,這50天對於GG來說,是一個重大的飛躍。因為這段時間通過一些基於GG的實戰專案,發現了GG的很多bug和不足之處,我都一一做了修正,並增加了一些基礎且必須的功能。這次釋出的是GG V4.0版本,又稱為GG 2014。   記得在GG早期版本時,園子裡的

QQ揭祕如何實現托盤閃動訊息提醒?【低調贈送QQ仿GG 4.1 最新原始碼】

  當QQ收到好友的訊息時,托盤的圖示會變成好友的頭像,並閃動起來,點選托盤,就會彈出與好友的聊天框,隨即,托盤恢復成QQ的圖示,不再閃動。當然,如果還有其它的好友的訊息沒有提取,托盤的圖示會變成另一個好友的圖示,並繼續閃動。那麼,QQ的這一效果是如何實現的了?我在QQ高仿GG2014中實現了同樣的效果,這裡

廣域網部署執行QQ仿 -- GG嘰嘰V3.5,增加自拍頭像功能細節優化(原始碼)

  距離上次發版本(GG嘰嘰V3.4,增加系統設定、最近聯絡人、群功能)又有1個月了,在這個月內,由於空閒時間不是很多,所以,GG增加的主要功能只是拍照並設定其為自己頭像、修改密碼、刪除好友、以及一些bug的修改。我試著列了一下接下來GG要優化的地方,總共達20多條,看來GG離一個正式的產品還有很長的路要走。

廣域網部署執行QQ仿 -- GG嘰嘰(原始碼)

前段時間看到園子裡有朋友開發了QQ高仿版的程式,我也非常有興趣,以前一直有個做即時聊天程式的夢,趁這段時間工作不是很忙,就開始動手來做這個事情。根據我以往積累下來的專案經驗,實現QQ的基本功能,問題應該不大。當然,我的目標並不是做一個QQ高仿版的玩具,而是希望做成一個能能夠真正使用的產品(當然是免費的),並持

廣域網部署執行QQ仿 -- GG嘰嘰V3.6,增加語音訊息語音留言等功能

  自從微信出來後,語音訊息和語音留言變得非常流行,按下一個鍵說話,比打字要方便多了。GG在V3.6版本增加了對語音訊息和語音留言(或稱為離線語音訊息)的支援。這兩個功能的實現已經很完整,只是比較遺憾的一點是:GG所使用的文字框控制元件,還沒有辦法像微信的聊天視窗的文字框那樣嵌入表示語音訊息的控制元件,所以,

廣域網部署執行QQ仿 -- GG嘰嘰V3.4,增加系統設定最近聯絡人群功能(原始碼)

  自從上次版本(GG嘰嘰V3.2,增加離線訊息、離線檔案功能)釋出後,我個人覺得主要的大功能都實現得差不多了,接下來的幾個版本將不斷優化GG的細節,提高其可用性。這次版本更新的內容主要是為GG增加了系統設定、並完善的了群所需的基礎功能。 一.GG V3.4 新增功能展現  1.群功能完善 (1)建立群

廣域網部署執行QQ仿 -- GG嘰嘰V3.0,完善基礎功能(原始碼)

  (前段時間封閉式開發完了一個專案,最近才有時間繼續更新GG的後續版本,對那些關注GG的朋友來說,真的是很抱歉。)GG的前面幾個版本開發了一些比較高階的功能,像視訊聊天、遠端桌面、檔案傳送、遠端磁碟等,但是,有一些基礎且必需的功能一直未實現,比如註冊、新增好友、加入群、群聊天等等。經常有朋友留言問這些功能要

廣域網部署執行QQ仿 -- GG嘰嘰V1.8(原始碼)

距離的GG 1.0釋出已經三週了,這三週內,我利用業餘時間為GG增加了視訊聊天的功能。個人覺得進展有些緩慢,主要是因為大多數時間都花在了UI上。由於本人不會PS,所以圖片素材都是從網上一個一個搜下來的,這個過程確實很煩人,而且最終有些素材還不是很滿意。 一.GG V1.8 新增功能展現 (1)傳送視訊會話

廣域網部署執行QQ仿 -- GG嘰嘰V3.2,增加離線訊息離線檔案功能(原始碼)

  (幾句題外話:雖然就如何將GG發展為一個有商業價值的產品,我還沒有很清晰明確的思路,但是從GG釋出以來,通過GG認識了一些朋友,也接了一些小單子,賺了一點小錢。有了一點甜頭,目前和2、3個好朋友一起做做小專案也是不錯的,這未嘗不是一條養家餬口之路了?呵呵)   距離上次更新(GG嘰嘰V3.0,完善基礎功

廣域網部署執行QQ仿 -- GG嘰嘰V2.4,增加遠端協助桌面共享功能(原始碼)

  QQ的遠端協助、或者說桌面共享是一個非常實用的功能,所以,2.4版本的GG複製了它,而且,GG增強了桌面共享的功能,它可以允許指定要共享桌面的區域,這樣,對方就只能看到指定區域的桌面,這對節省流量會非常有幫助。   GG實現這些功能的過程並不是那麼簡單,因為內部業務邏輯的關聯容易把人搞暈。從執行起來的程

廣域網部署執行QQ仿 -- GG嘰嘰V3.7,優化視訊聊天控制更多相關細節

  在廣域網中,由於網路的結構紛繁複雜、而且其實時狀況又是千變萬化的,所以,要使廣域網中的視訊聊天達到一個令人滿意的效果,存在諸多挑戰。這次釋出的GG 3.7版本嘗試在這一方向上做一些努力,據我自己測試,相比之前版本,新版本GG的視訊聊天的效果確實有較大提升。本文不僅會分享GG的最新原始碼,而且也會把我在過去

廣域網部署執行的即時通訊系統 -- GGTalk總覽(附原始碼下載)

    (最新版本:V6.0,2017.12.11 。即將推出Xamarin移動端版本,包括 Android 和 iOS)        GGTalk開源即時通訊系統(簡稱GG)是QQ的高仿版,同時支援區域網和廣域網,包括客戶端(PC客戶端、android移動端)、服務端、資料庫。從2013年最初的GG1.

如何實現錄製視訊聊天的全過程? 【低調贈送QQ仿GG 4.3 最新原始碼】

  前段時間做個專案,客戶需要將視訊對話的整個過程錄製下來,這樣,以後就可以隨時觀看。想來錄製整個視訊聊天的過程這樣的功能應該是個比較常見的需求,比如,基於網路語音視訊的1:1的英語口語輔導,如果能將輔導的整個過程錄製下來生成一個標準的MP4檔案,就是一份難得的資料,便於以後複習和分享。我將1:1的視訊對話錄

QQ揭祕如何實現窗體靠邊隱藏?【低調贈送QQ仿GG 4.2 最新原始碼】

      QQ有個靠邊隱藏的功能,使用起來很方便:在螢幕上拖動QQ的主窗體,當窗體的上邊沿與螢幕的上邊沿對齊時,主窗體就會duang~~地隱藏起來,當將滑鼠移到螢幕上邊沿的對應區域時,主窗體又會duang~~顯示出來。   我在GG的最新版4.2中也增加了靠邊隱藏的功能,支援靠左邊沿隱藏、靠上邊沿隱藏、靠

如何做到在虛擬資料庫和真實資料庫之間自由切換?【低調贈送QQ仿GG 4.4 最新原始碼】

      記得以前在公司上班時,有時候白天的活沒幹完,我就會把工作帶回家晚上加班繼續做。但是,我們開發用的資料庫是部署在公司局網內部的一臺伺服器上的,在家裡是肯定連不上這臺機器的。在家裡沒有資料庫,服務端就跑不起來,功能也就沒辦法除錯。後來我們的解決方法就是使用虛擬資料庫。在公司上班時,就使用公司局網的真實

maven maven-war-plugin 解決java war專案間的依賴(兩個war都獨立部署執行,maven 3.2.x親測)

最近整理基礎框架,有些專案不想分散式,所以基礎框架必須同時可獨立部署,也可直接被作為依賴和業務工程打到一起,記錄下解決war專案依賴的要點,一開始用warpath,結果報找不到,有些帖子還是17年的,於是繼續檢視。 warpath 是個坑,按照網上的說明基本跑不通,可能是maven-war-plugin 升

仿餓了麼【node+webpack】(window部署執行

為了調通後臺,研究了好幾天的vue專案,遇到各種坑,終於算調通了,現在把整個操作做個記錄: window端:(程式碼:https://github.com/vuejs/vue-devtools) 1.用idea編譯vue專案:   Intellij IDEA搭建vue-cli專

app開發最新版本仿快手短視頻類社交源碼整套出售轉讓(需求定制)

app開發app開發最新版本高仿快手短視頻類社交源碼整套出售轉讓(需求可定制)在百度公開宣布要All in AI後,李彥宏曾在多個場合分享百度的人工智能戰略。來到北大,人工智能依然是一個繞不開的話題,現場提問中有7個問題都是關於人工智能的。有同學就自動駕駛存在哪些困難提問,李彥宏坦言人工智能汽車還處在一個非常

基於vue2+nuxt構建的仿餓了麽(2018

case 開發 targe 謝謝 註意 utf-8 def 快速 sets 前言 高仿餓了麽,以nuxt作為vue的服務端渲染,適合剛接觸或者準備上vue ssr的同學參考和學習 項目地址如遇網絡不佳,請移步國內鏡像加速節點 效果演示 查看demo請戳這裏(請用chrome

仿介面實現功能

第一步: 匯入類連結1連結2 第二步: 在AppDelegate.m裡 標頭檔案 #import “ViewController.h” 程式碼如下: self.window.rootViewController = [ViewController new]; self.window.back