(前段时间封闭式开发完了一个项目,最近才有时间继续更新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使用VS2010编译生成的GG.exe文件,这个文件经常被新毒霸报是病毒,这个问题从最初的1.0版本就有朋友反应过,算是个老问题了。我猜想,也许是编译生成的GG.exe文件中有某段数据与病毒库中的某特征符合吧。如果把GG.exe从压缩包中删除,就不会报病毒了,但是,重新编译生成后,又有可能会报。大家帮我看看源码中有那段代码像是病毒了:)
关于GG的最新全貌介绍,我单独写了一篇文章,作为汇总,可参见 可在广域网部署运行的QQ高仿版 -- GG2013概要。 欢迎和我探讨关于GG2013的一切,我的QQ:2027224508,多多交流! 大家有什么问题和建议,可以留言,也可以发送email到我邮箱:ggim2013@163.com。 本文地址:http://www.cnblogs.com/justnow/p/3665824.html |