作者: 乔克斯
查看: 13395|回复: 24

主题标签Tag

打印 上一主题 下一主题

【GG2014 完美版】新增支持:聊天记录、好友分组、托盘闪...

[复制链接]
跳转到指定楼层
楼主
乔克斯 发表于 2014-11-6 15:53:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
查看: 13395|回复: 24
GG2014 完美版!新增支持:聊天记录、好友分组、托盘闪动消息提醒、登录状态、GIF动态表情

  距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃。因为这段时间通过一些基于GG的实战项目,发现了GG的很多bug和不足之处,我都一一做了修正,并增加了一些基础且必须的功能。这次发布的是GG V4.0版本,又称为GG 2014。

  记得在GG早期版本时,园子里的吉日兄跟我留言说:"GG完全不能正式使用......",那时我还不是很服气,后来当我基于GG开发正式项目时,才逐渐明白吉日兄说的是对的。但是,今天,我可以邀请吉日兄再来试试GG的最新版本了,因为现在GG的品质是过硬的。不信吗?下载个试试呗!

一.GG V4.0 新增功能展现 

1.聊天记录:支持本地保存和服务器端保存两种方式。

2.好友分组:新增/删除分组,修改分组名称,改变好友的所属分组。

3.托盘闪动:跟QQ完全一样,当接收到消息时,托盘会闪动对应好友的头像。点击头像,将弹出与好友的聊天框。

4.登录状态:在线、离开、忙碌、勿打扰、隐身。当修改自己的状态时,好友能同步看到自己的最新状态。

5.动态表情:聊天框支持插入GIF图片、动态表情,并播放动画。

6.输入提醒:像QQ一样,当对方正在输入消息时,我这边的聊天框可以看到对方“正在输入”的提示。

7.自动记录:GG2014会自动记录上次打开的主界面的位置、大小;最后一次打开的聊天窗口的大小;最后一次设定的字体的颜色、大小等。

8.打开聊天窗口时,自动显示上次交谈的最后一句话。(可以通过系统设置来关闭该功能)

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

  聊天记录:

  

  好友分组:

  

  正在输入:

  

  系统设置:

  

二.实现思路

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

1. 聊天记录的本地存储采用的是Sqlite数据库,服务端存储目前是在内存中虚拟的数据库。

2. 从服务器读取聊天记录,使用的是Remoting技术。IRemotingService 接口的GetChatRecordPage方法以及GetGroupChatRecordPage方法。

3. 好友分组的背后原理:User类的Friends字段,其值是类似这样的 --  我的好友:10000,10001,1234;家人:1200,1201;同学:1300,1301

(1)通过分号区隔不同的分组

(2)通过冒号区隔分组名称与好友列表。

(3)通过逗号区隔不同的好友ID。

(4)另外,User类还有个DefaultFriendCatalog字段,这个用来存储默认分组的名称(初始值为”我的好友“),默认分组的名称可以被改变,但是不能被删除。(这一点也是完全模仿QQ的) 

4. 托盘闪动的实现主要集中于TwinkleNotifyIcon组件,无论是个人聊天消息还是组聊天消息,首先被push进TwinkleNotifyIcon,使其闪烁,当点击TwinkleNotifyIcon,再把消息提取出来显示。

5. 输入提醒的背后原理:

(1)当检测到聊天输入框的内容发生变化时(TextChanged事件),就发送一个InputingNotify类型的消息给对方,并控制两个该消息的最小间隔为5秒。

(2)对方一旦收到InputingNotify通知,就立即显示”正在输入“的Label。

(3)如果对方连续10秒都再没收到InputingNotify通知,则将将正在输入的状态改为false。(ChatForm的CheckInptingVisiable方法)

(4)当对方接收到聊天消息,立即将正在输入的状态改为false,然后,再等待下一个InputingNotify通知。

6.自动记录功能,是使用本地文件来记录窗体的位置信息的,详见SystemSettings类的ChatFormSize、MainFormSize、MainFormLocation、Font等属性。

7.打开聊天窗体时,显示上次聊天的最后一句话:该功能是利用了User类的Tag字段来存储最后一句话信息。而且好友信息(User类的实例)是会被持久化在本地文件中的。


三.GG V4.0 源码下载

  GG V4.0 源码

  有很多朋友强烈要求给一个可以直接部署的版本,方便他们直接部署测试,OK,这次满足这一需求~~  

  GG V4.0 可直接部署版本

  内置测试帐号:10000、10001、10002、10003 ,密码:1


关于GG的最新全貌介绍、以及如何部署、试用帐号等问题,我单独写了一篇文章,作为汇总,可参见 可在广域网部署运行的QQ高仿版 -- GG2013概要

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

大家有什么问题和建议,可以留言,也可以发送email到我邮箱:ggim2013@163.com

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 转播转播
回复 论坛版权

使用道具 举报

沙发
HJL 发表于 2014-11-6 16:41:43 | 只看该作者
抢滩登陆!
回复

使用道具 举报

板凳
dingshixing 发表于 2014-11-7 22:53:48 | 只看该作者
好牛啊!最近正好要做一个这样的项目!
地板
炫爱小气 发表于 2014-11-14 08:51:14 | 只看该作者
乔帮主就是牛啊
5#
iansoft 发表于 2014-11-15 03:48:13 | 只看该作者
非常感谢楼主的贡献出自己的项目。想请问一下。如果像把楼主的一些功能用在自己的项目中可以吗?
6#
 楼主| 乔克斯 发表于 2014-11-15 11:08:17 | 只看该作者
iansoft 发表于 2014-11-15 03:48
非常感谢楼主的贡献出自己的项目。想请问一下。如果像把楼主的一些功能用在自己的项目中可以吗? ...

可以的。
7#
iansoft 发表于 2014-11-15 22:48:53 | 只看该作者

非常感谢。还想请问一下  如果 广域网 使用是否可以直接部署 。 是否实现了UDP打洞 ?
8#
 楼主| 乔克斯 发表于 2014-11-17 09:58:54 | 只看该作者
iansoft 发表于 2014-11-15 22:48
非常感谢。还想请问一下  如果 广域网 使用是否可以直接部署 。 是否实现了UDP打洞 ? ...

这个案例直接服务器部署服务器端,然后客户端改下IP即可。
9#
qiuyuanpq 发表于 2014-12-3 15:11:03 | 只看该作者
这个东西对绝大部分人来说意义仅止于那个界面,核心部分完全依赖这个esframework这个商业库,而不是开源组件,所以连参考价值都没有,普通开发人员或公司不会付这个钱
10#
胡帅 发表于 2014-12-4 15:46:55 | 只看该作者
同意,我觉得界面不错
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-11-24 10:19, Processed in 0.631726 second(s), 36 queries , Gzip On.

快速回复 返回顶部 返回列表