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

C#開源即時通訊GGTalk發表於2014-04-15

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

  先提醒一下,GG3.0中這些基礎功能的實現方式是比較粗糙的,我還沒有時間深入考慮效能、快取等問題(原始碼中我以“建議”的字樣標註了需要優化的地方),後續版本,我會將它們一一優化。由於長時間未更新,迫不及待地先放個版本出來給大家參考。

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

(1)註冊新帳號。

(2)新增好友(包括:通知對方、好友上下線通知)。

(3)加入群(包括:通知其它群友、群友上下線通知)。

(4)群聊天。

(5)以前版本的帳號只能為數字(就像QQ一樣),但是,3.0及以後版本,帳號中可以包含字母。

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

  註冊:

          

  新增好友:

      

  加入群:

     

  群聊天:

     

 

二.實現思路

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

1.虛擬資料庫

(1)為了部署測試更簡單,GG沒有采用真實的物理資料庫,而是在記憶體中虛擬了一個資料庫(即服務端的VirtualDB類),用於儲存使用者註冊資訊、好友關係、群資訊等。

(2)GG內建了幾個使用者:10000、10001、10002、10003、10004,它們的登入密碼都是"1"。

(3)GG內建的這幾個使用者之間都是好友關係。

(4)GG內建了兩個群:G001、G002。G001群包含所有內建測試使用者,G002群包含10000和10001兩個使用者。

(5)上述的這些內建資訊,在VirtualDB類的建構函式中設定。

2.服務端主要變更

(1)RegisterService:服務端釋出了一個Remoting服務RegisterService,用於提供註冊服務。由於註冊之前,使用者帳號還不存在,所以,不能通過ESFramework來實現。

(2)FriendsManager:服務端增加了FriendsManager類,以提供好友關係資訊。

(3)GroupManager:服務端增加了GroupManager類,以提供群/組的資訊。

(4)BasicHandler:服務端修改了BasicHandler類的實現,以驗證客戶端登入的使用者帳號密碼。

(5)CustomizeHandler:服務端修改了CustomizeHandler的實現,使之可以處理來自客戶端的各種請求訊息(如加入群、加好友等請求)。

3.客戶端主要變更

(1)增加RegisterForm、AddFriendForm、JoinGroupForm、GroupChatForm四個窗體分別用於註冊、新增好友、加入群、群聊天。

(2)增加GlobalUserCache類,用於快取所有的好友資訊。

(3)客戶端接收到的所有訊息都是在MainFormPartial.cs檔案中處理的,包括廣播訊息(如群聊)

(4)使用者資訊使用User類封裝(位於GG.Core專案的Entity.cs檔案中)。

 

三.GG V3.0 原始碼下載 

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

 注意:如果要將GG部署到廣域網,則可以在服務端的配置檔案中設定監聽的埠;而在客戶端的配置檔案中,則可以指定伺服器的IP和Port。

 

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

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

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

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

相關文章