GG的前面幾個版本開發了一些比較進階的功能,像視訊聊天、遠端桌面、檔案傳送、遠端磁盤等,但是,有一些基礎且必需的功能一直未實作,比如注冊、添加好友、加入群、群聊天等等。經常有朋友留言問這些功能要怎麼做,GG3.0終于可以給出一個答案了。
(前段時間封閉式開發完了一個項目,最近才有時間繼續更新GG的後續版本,對那些關注GG的朋友來說,真的是很抱歉。)GG的前面幾個版本開發了一些比較進階的功能,像視訊聊天、遠端桌面、檔案傳送、遠端磁盤等,但是,有一些基礎且必需的功能一直未實作,比如注冊、添加好友、加入群、群聊天等等。經常有朋友留言問這些功能要怎麼做,GG3.0終于可以給出一個答案了。
先提醒一下,GG3.0中這些基礎功能的實作方式是比較粗糙的,我還沒有時間深入考慮性能、緩存等問題(源碼中我以“建議”的字樣标注了需要優化的地方),後續版本,我會将它們一一優化。由于長時間未更新,迫不及待地先放個版本出來給大家參考。
一.GG V3.0 新增功能展現
(1)注冊新帳号。
(2)添加好友(包括:通知對方、好友上下線通知)。
(3)加入群(包括:通知其它群友、群友上下線通知)。
(4)群聊天。
(5)以前版本的帳号隻能為數字(就像QQ一樣),但是,3.0及以後版本,帳号中可以包含字母。
廢話不多說,還是先上圖。
注冊:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iN4EzM4IzN0QDMwETM1EzLcRDM0EDMy8CX0ADNwIzLcl2Lc12bj5ycn9Gbi52YuAzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
添加好友:
加入群:
群聊天:
二.實作思路
雖然提供了源代碼,但是,我還是想将主要的思路列一下,這樣,大家了解起源碼來,會節省更多的時間。
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到我郵箱:[email protected]。
如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵