1. 程式人生 > >可在廣域網部署執行的即時通訊系統 -- GGTalk總覽(附原始碼下載)

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

    (最新版本:V6.0,2017.12.11 。即將推出Xamarin移動端版本,包括 Android 和 iOS)     

  GGTalk開源即時通訊系統(簡稱GG)是QQ的高仿版,同時支援區域網和廣域網,包括客戶端(PC客戶端、android移動端)、服務端、資料庫。從2013年最初的GG1.0開放原始碼以來,到後來陸續增加了網盤功能、遠端協助功能、離線檔案功能、群聊功能、語音聊天功能、視訊聊天功能、以及視訊錄製功能、和增加了資料庫。我想寫一個類似彙總的文章,通過這篇文章,大家可以瞭解到GGTalk開源即時通訊系統的全貌和最新進展,以及關於一些常見問題的解答也彙總在這裡。

  言歸正傳,對我個人而言,我的目標並不是做一個QQ高仿版的玩具,而是希望做成一個能夠真正使用的產品(這個過程還有很長的路要走),並持續維護下去。

          想要直接下載體驗的朋友請點選:原始碼下載中心

一.GGTalk開源即時通訊系統已實現的功能

(01)註冊、登入、查詢使用者、新增好友、好友列表。

(02)自拍頭像。

(03)文字聊天、字型設定、GIF動態表情、視窗震動、截圖、手寫板、登入狀態(線上、離開、忙碌、勿打擾、隱身)、輸入提醒

(04)群功能:建立群、加入群、退出群、群聊天

(05)檔案傳送、資料夾傳送(支援斷點續傳)

(06)語音視訊聊天

(07)遠端磁碟

(08)遠端協助

(09)共享桌面(可以指定要共享的桌面區域)

(10)可靠的P2P

(11)網盤   

(12)離線訊息

(13)離線檔案

(14)托盤閃動:跟QQ完全一樣,當接收到訊息時,托盤會閃動對應好友的頭像。點選頭像,將彈出與好友的聊天框。

(15)最近聯絡人列表

(16)系統設定:開機自動啟動、麥克風裝置索引、攝像頭裝置索引,叉掉主視窗時關閉程式還是隱藏視窗。

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

(18)好友分組:新增/刪除分組,修改分組名稱,改變好友的所屬分組。

(19)開啟聊天視窗時,自動顯示上次交談的最後一句話。

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

(21)自動記錄:GG2014會自動記錄上次開啟的主介面的位置、大小;最後一次開啟的聊天視窗的大小;最後一次設定的字型的顏色、大小等。 

(22)主窗體靠邊自動隱藏。

(23)錄製視訊聊天。

(24)支援資料庫(SqlServer 2000/2005/2008、MySQL),並可以通過配置在真實資料庫和虛擬資料庫之間自由切換。 

(25)語音視訊裝置測試   

(26)聊天訊息加密

(27)系統通知

二.開發環境及GGTalk即時通訊原始碼說明

1. 服務端和PC端 :VS2010 ,開發語言:C#, .NET Framework 版本: 2.0 

2. android移動端:android studio 1.3.2 ,gradle 1.3 

3. 部署PC客戶端時,客戶端機器還需要安裝 (2008、2010、2013)。

4. 若是要開始研究GG的原始碼,客戶端和服務端的入口分別是:

(1)客戶端:請特別關注 MainFormPartial.cs 這個檔案,客戶端接收到的訊息幾乎都是在這個檔案中處理的;GlobalUserCache類用於快取所有的使用者資訊、群組資訊、包括本地持久化這些資訊,以及根據版本號自動更新這些資訊。

(2)服務端:請特別關注 CustomizeHandler.cs 這個檔案,服務端接收到的訊息幾乎都是在這個檔案中處理的;GlobalCache類用於快取所有的使用者資訊、群組資訊,並與真實/虛擬資料庫進行互動。

三.相關說明

1.如果要將GGTalk開源即時通訊系統部署到廣域網,則可以在服務端的配置檔案中設定監聽的埠;而在客戶端的配置檔案中,則可以指定伺服器的IP和Port。

2.麥克風、攝像頭的選擇可在客戶端系統設定視窗(SystemSettingForm)中指定。

3.語音視訊:也有很多朋友問語音視訊裝置的工作怎麼不正常,或者語音視訊不流暢,這個可以直接參考OMCS官方文件:攝像頭、麥克風、揚聲器裝置測試 、頻寬要求

4.特別說明一下:GG專案中,只要是我寫的程式碼,全部都放出來了。拜託喜歡每一個dll都有原始碼的朋友不要再問我要其它的原始碼了:)

四.原始碼版本記錄

2013.08.07  --  V1.0, 登入、好友列表、文字聊天、檔案傳送、資料夾傳送

2015.09.02  --  V4.4, 增加對SqlServer資料庫的支援,並可以通過配置在真實資料庫和虛擬資料庫之間自由切換。 增加語音視訊裝置測試功能。

2016.01.20  --  V4.5, 加密聊天訊息,讓通訊更安全!語音視訊優化,視訊聊天更流暢!

2016.12.06  --  V5.5, 增加對MySQL資料庫的支援!

 2017.12.11  --  V6.0, 增加Xamarin移動端,包括 Android 和 iOS!

五.GG截圖

0. android 移動端

           

1.登入框

       

2.主窗體、最近聯絡人

           

3.聊天視窗                                                                                 

        

4.視訊會話邀請、視訊會話    (2015.06.17 增加視訊聊天錄製功能) 

          

5.磁碟訪問請求、進入遠端磁碟

       

6.遠端磁碟操作

      

7.網盤

      

8.遠端協助

      

9.共享桌面(指定了QQ影音播放器的區域作為共享區域)

      

10.註冊:

          

11.新增好友:

      

12.加入群:

     

13.群聊天:

     

14.離線訊息:

      

15.傳送離線檔案:

      

16.離線檔案傳送完成、接收完成:

  

17.系統設定:

  

18.自拍頭像:

      

19.使用自拍頭像:

     

20.聊天記錄:

  

21.好友分組:

  

22.正在輸入:

  

六.最新原始碼下載

1.GGTalk服務端和PC端原始碼    

    (壓縮包中有 《部署說明.txt》 和 建立資料庫的指令碼 《GGTalk.sql》)

      注:我的GGTalk使用VS2010編譯生成的GGTalk.exe檔案,這個檔案有時會被新毒霸報是病毒,也許是編譯生成的GGTalk.exe檔案中有某段資料與病毒庫中的某特徵符合吧,大家幫我看看原始碼中有那段程式碼像是病毒了:)

部署說明:      

1.當前版本服務端預設配置為記憶體虛擬資料庫版本,不需要安裝資料庫。

2.將GGTalk.Server資料夾拷貝到伺服器上,執行GGTalk.Server.exe。

3.修改客戶端配置檔案GGTalk.exe.config中ServerIP配置項的值為伺服器的IP。

4.執行客戶端,註冊帳號登入試用。

5.內建測試帳號為 10000,10001,10002,10003,10004;密碼都是 1。 

6.若要測試android移動端,請先修改安卓原始碼中伺服器的IP和埠,然後重新編譯生成apk。 

如果需要使用真實的物理資料庫,則需按下列步驟進行:

1. 在SqlServer 2000/2005/2008 中新建資料庫GGTalk,然後在該庫中執行 SqlServer.sql 檔案中的指令碼以建立所需表。

    (如果要使用MySQL資料庫,則使用MySQL.sql指令碼)

2. 開啟服務端的配置檔案GGTalk.Server.exe.config

(1)修改 UseVirtualDB 配置項的值為false。

(2)修改 DBType 為 SqlServer 或 MySQL。

(3)修改 DBIP 配置項的值為資料庫的IP地址。

(4)修改 SaPwd 配置項的值為資料庫管理員sa的密碼。

3.修改客戶端配置檔案GGTalk.exe.config中ServerIP配置項的值為伺服器的IP。

4.執行客戶端,註冊帳號登入試用。

2.GGTalk即時通訊系統安卓原始碼     

      GG安卓版本已實現如下功能:

(1)登入服務端

(2)文字聊天,表情圖片,訊息提醒

(3)好友列表

(4)顯示好友線上狀態

(5)檔案傳輸

     原始碼下載:     (若要和PC端聯合測試,請關閉PC端那邊的聊天訊息加密功能:將PC客戶端專案的GlobalResourceManager類的 des3Encryption 成員賦值為 null 即可!)

    說明:本安卓demo屬於入門級水平,目的是為了展示與PC打通的基本實現。若要將GG安卓版本的原始碼用於正式專案中,建議先對其進行重構,或者敬請等候後續更完善的版本分享給大家!

________________________________________________________________________

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

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

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

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

相關推薦

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

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

部署AWStats日誌分析系統與優化安裝包

服務 移動文件 samb cron 訪問權限控制 lam 環境 tab level 介紹 AWStats是使用Perl語言開發的一款開源日誌分析系統,可以分析apache,samba,vsftpd,iis等服務的日誌信息,結合crond等計劃任務,可以對不斷增長的日誌內

Android中AIDL實現程序通訊原始碼下載

AIDL概述 之前的部落格《Android中通過Messenger與Service實現程序間雙向通訊》演示瞭如何通過Messenger實現與Service進行跨程序通訊,即IPC。但用Messenger實現的IPC存在一點不足:Service內部維護著一個Me

android即時通訊軟體開發教程asmack+openfire+spark

      本人這陣子因為需求的原因,需要做一個android即時通訊軟體,所以接下來分享我這陣子的開發心得。       這一章主要是搭建android通訊軟體的伺服器環境,並且體驗自己開發的通訊軟體的聊天功能。       首先,要了解開發所用的東西asmack+ope

Android跨程序通訊AIDL詳解原始碼

概述 AIDL:Android Interface Definition Language,即Android介面定義語言,記住,它是一門語言,設計它的目的就是為了實現跨程序通訊,我們知道Android的每一個程序都執行在獨立的記憶體中,程序之間程式碼是不能愉快

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

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

GGTalk即時通訊系統支援廣域網終於有移動端了!技術原理、實現、原始碼

      首先要感謝大家一直以來對於GGTalk即時通訊系統的關注和支援!GGTalk即時通訊系統的不斷完善與大家的支援分不開! 從2013年最初的GG1.0開放原始碼以來,到後來陸續增加了網盤功能、遠端協助功能、離線檔案功能、群聊功能、語音聊天功能、視訊聊天功能、以及視訊錄製功能、和增加了資料庫——一路走

急急如律令!火速搭建一個C#即時通訊系統原始碼分享——高度移植!

1 void tcpPassiveEngine_MessageReceived(IPEndPoint userAddress, byte[] msg) 2 { 3 //取出訊息型別 4 int msgType = BitCon

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

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

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

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

廣域網部署執行的QQ高仿版 -- GG嘰嘰V1.8原始碼

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

即時通訊系統中實現聊天訊息加密,讓通訊更安全【低調贈送:C#開源即時通訊系統支援廣域網——GGTalk4.5 最新原始碼

  在即時通訊系統(IM)中,加密重要的通訊訊息,是一個常見的需求。尤其在一些政府部門的即時通訊軟體中(如稅務系統),對即時聊天訊息進行加密是非常重要的一個功能,因為談話中可能會涉及到機密的資料。我在最新的GG 4.5中,增加了對即時聊天訊息進行加密的功能,但這一功能並不是強制的,可以通過開關來進行控制。本文

廣域網部署執行的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的最新原始碼,而且也會把我在過去

國產化即時通訊系統開發 -- 使用Avalonia實現GGTalk的UI介面Linux、Ubuntu、UOS、中標麒麟

距離2013年開源GGTalk以來,7年已經過去了,GGTalk現在有了完整的PC版、安卓版、iOS版(即將釋出),以及Xamarin版本。 然而,時代一直在變化,在今天,有個趨勢越來越明顯,那就是政府系統將逐漸遷移到Linux以及國產化的作業系統和資料庫上面來。 所以,GGTalk也將隨順這一必然的趨勢,服

數字資產交易管理即時通訊平臺,區塊鏈IM即時通訊系統開發數字資產交易

區塊鏈 watermark 客戶 架構設計方法 這一 jpg src 比特 得到 從幣圈玩家的角度來看數字資產交易所的即時通訊問題,一直都存在著巨大的鴻溝。溝通難的問題一直沒有得到解決,之前對於客戶關系管理或者用戶與用戶之間都只是建立以論壇或者交易所聊天框的形式進行溝通。為