【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)

(几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱。有了一点甜头,目前和2、3个好朋友一起做做小项目也是不错的,这未尝不是一条养家糊口之路了?呵呵)

  距离上次更新(GG叽叽V3.0,完善基础功能)正好有1个月了,在这个月中,我主要为GG增加了离线消息和离线文件的功能。之所以将这两个功能提前实现,是因为至GG发布以来,就有很多朋友问我在GG的基础上如何实现离线消息和离线文件。看来作为一个能用的IM软件,离线消息和离线文件是必备的基础功能了。

一.GG V3.2 新增功能展现 

(1)离线消息。

(2)离线文件。

(3)以前功能的几个bug修改。

废话不多说,还是先上图。

  离线消息:

  发送离线文件:

  离线文件发送完成、接收完成:

  

二.实现思路


  虽然提供了源代码,但是,我还是想将主要的思路列一下,这样,大家理解起源码来,会节省更多的时间。

1. GG
V3.2仍然使用的是在内存虚拟的数据库VirtualDB类,并且在其中增加了两个表:offlineMessageTable、offlineFileTable,分别用于存储离线消息和离线文件条目信息。

如果使用真实的数据库,移植也是很简单的,只需要将VirtualDB的所有方法重写,并与真实的数据库交互即可。

2. 在服务端增加了OfflineMessageController类,用于管理离线消息。

3.
在服务端增加了OfflineFileController类,用于管理离线文件。注意:GG将要中转的离线文件是保存在服务端运行目录下的OfflineFiles文件夹下(可在OfflineFileController源码中修改这个路径)。

4. 需特别提醒是,网盘功能和离线文件功能的实现都用到了一个非常重要的字段,TransferingProject的Comment属性:

(1)TransferingProject的Comment属性对应着方法BeginSendFile(用于请求发送文件)的comment参数。

(2)在网盘的功能中,comment用于表示上传或下载时存储的路径,GGLib项目中的Comment4NDisk静态类用于支持这一点。

(3)在离线文件功能中,comment用于表示发送者或接收者的UserID,GG.Core项目中的Comment4OfflineFile静态类用于支持这一点。

5.离线消息基本逻辑要点:通过预定IRapidServerEngine的CustomizeController属性的TransmitFailed事件,来取得所有转发失败的消息,并只关注其中的聊天消息。

6.离线文件基本逻辑要点:

(1)当客户端登录成功并完成初始化后,会向服务器发送两个请求消息(位于MainForm的MainForm_Load方法):InformationTypes.GetOfflineMessage、InformationTypes.GetOfflineFile。

(2)服务端接收到上述两个请求后,会调用OfflineMessageController和OfflineFileController来分分别处理。(位于CustomizeHandler类的HandleInformation方法)

(3)无论客户端(作为接收者)是接收完了离线文件、还是拒绝了离线文件,服务端都会发送一个InformationTypes.OfflineFileResultNotify消息通知离线文件的发送方。

三.GG V3.2 源码下载


  GG V3.2
源码

注:GG使用VS2010编译生成的GG.exe文件,这个文件经常被新毒霸误报为病毒,所以,这次发布的压缩包中我把客户端生成的GG.exe删除了,大家可以自己编译生成它。

关于GG的最新全貌介绍,我单独写了一篇文章,作为汇总,可参见 可在广域网部署运行的QQ高仿版 --
GG2013概要

欢迎和我探讨关于GG2013的一切,我的QQ:2027224508,多多交流!

大家有什么问题和建议,可以留言,也可以发送email到我邮箱:[email protected]。

如果你觉得还不错,请粉我,顺便再顶一下啊,呵呵

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码),布布扣,bubuko.com

时间: 2024-12-25 09:41:40

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)的相关文章

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)

自从上次版本(GG叽叽V3.2,增加离线消息.离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性.这次版本更新的内容主要是为GG增加了系统设置.并完善的了群所需的基础功能. 一.GG V3.4 新增功能展现 1.群功能完善 (1)创建群 (2)退出群(同时,通知其它群成员) 2.系统设置 (1)叉掉主窗口时,关闭程序还是隐藏窗口. (2)麦克风设备索引 (3)摄像头设备索引 (4)开机自动启动 3.其它 (1)最近联系人列表. (2)

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V2.0,增加网盘和远程磁盘功能(源码)

尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁盘一样来访问在线的其它用户的磁盘. 一.GG V2.0 新增功能展现 (1)网盘:在服务端为每个用户分配一个网盘,用户通过客户端可以访问自己的网盘.就像QQ的微云一样. (2)远程磁盘:任何一个在线用户,都可以访问其它在线用户的磁盘(先要经过对方的同意). (3)无论是网盘.还是远程磁盘,都支持:上

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)

前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应该不大.当然,我的目标并不是做一个QQ高仿版的玩具,而是希望做成一个能能够真正使用的产品(当然是免费的),并持续维护下去.想为这个聊天工具取个名字,就抽取了"叽叽歪歪"中的"叽叽"(GG)作为暂时的名称吧. 一.GG的功能规划 我想分成几个阶段来开发GG,每个阶段一个版

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)

QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非常有帮助. GG实现这些功能的过程并不是那么简单,因为内部业务逻辑的关联容易把人搞晕.从运行起来的程序来说,远程协助的场景很容易理解:一方是请求方,一方是协助方,边界非常清晰.但是在程序中,无论是哪一方,其对应的窗体都是ChatForm,所以,在编码时,你经常需要切换你的思维:一会要站在请求方的角度

可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)

(几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做做小项目也是不错的,这未尝不是一条养家糊口之路了?呵呵) 距离上次更新(GG叽叽V3.0,完善基础功能)正好有1个月了,在这个月中,我主要为GG增加了离线消息和离线文件的功能.之所以将这两个功能提前实现,是因为至GG发布以来,就有很多朋友问我在GG的基础上如何实现离线消息和离线文件.看来作为一个能用

可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)

距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bug的修改.我试着列了一下接下来GG要优化的地方,总共达20多条,看来GG离一个正式的产品还有很长的路要走.慢慢来吧! 一.GG V3.5 新增功能展现 1.自拍头像 2.修改密码 3.删除好友 4.其它 (1)主窗口允许改变大小. (2)修复bug:聊天发消息时,如果截图很大,对方就收不到. (3)

可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能

自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一点是:GG所使用的文本框控件,还没有办法像微信的聊天窗口的文本框那样嵌入表示语音消息的控件,所以,我不得不把接收到的语音消息使用一个下拉列表罗列出来,实在很无奈. 一.GG V3.6 新增功能展现 1.语音消息 2.语音留言 3.离线消息分类:离线文字消息.离线语音消息. 4.修复bug:V3.5版

可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节

在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试,相比之前版本,新版本GG的视频聊天的效果确实有较大提升.本文不仅会分享GG的最新源码,而且也会把我在过去项目中总结的一些语音视频聊天的优化心得分享给大家. 一.GG V3.7 新增功能展现 针对视频聊天的优化,主要体现在以下几点,为了方便介绍,我将VideoForm的窗体设计的截图放在这里: 1.实

可在广域网部署运行的QQ高仿版 -- GG2014 完美版!新增支持:聊天记录、好友分组、托盘闪动消息提醒、登录状态、GIF动态表情

距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基于GG的实战项目,发现了GG的很多bug和不足之处,我都一一做了修正,并增加了一些基础且必须的功能.这次发布的是GG V4.0版本,又称为GG 2014. 记得在GG早期版本时,园子里的吉日兄跟我留言说:"GG完全不能正式使用......",那时我还不是很服气,后来当我基于GG开发正式项目