(前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉。)GG的前面几个版本开发了一些比较高级的功能,像视频聊天、远程桌面、文件传送、远程磁盘等,但是,有一些基础且必需的功能一直未实现,比如注册、添加好友、加入群、群聊天等等。经常有朋友留言问这些功能要怎么做,GG3.0终于可以给出一个答案了。
先提醒一下,GG3.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使用VS2010编译生成的GG.exe文件,这个文件经常被新毒霸报是病毒,这个问题从最初的1.0版本就有朋友反应过,算是个老问题了。我猜想,也许是编译生成的GG.exe文件中有某段数据与病毒库中的某特征符合吧。如果把GG.exe从压缩包中删除,就不会报病毒了,但是,重新编译生成后,又有可能会报。大家帮我看看源码中有那段代码像是病毒了:)
关于GG的最新全貌介绍,我单独写了一篇文章,作为汇总,可参见 可在广域网部署运行的QQ高仿版 -- GG2013概要。
欢迎和我探讨关于GG2013的一切,我的QQ:2027224508,多多交流!
大家有什么问题和建议,可以留言,也可以发送email到我邮箱:ggim2013@163.com。
如果你觉得还不错,请粉我,顺便再顶一下啊,呵呵