距上次GG V3.7版本号(可在广域网部署执行的QQ高仿版 -- GG叽叽V3.7。优化视频聊天、控制很多其它相关细节)的公布。已经有50天了,这50天对于GG来说。是一个重大的飞跃。

由于这段时间通过一些基于GG的实战项目,发现了GG的非常多bug和不足之处,我都一一做了修正,并添加了一些基础且必须的功能。这次公布的是GG V4.0版本号,又称为GG 2014。

一.GG 2014 新增功能展现 

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

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

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

4.登录状态:在线、离开、忙碌、勿打搅、隐身。

当改动自己的状态时,好友能同步看到自己的最新状态。

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

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

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

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

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

  聊天记录:

  

  好友分组:

  

  正在输入:

  

  系统设置:

  

二.实现思路

  尽管提供了源代码,可是,我还是想将基本的思路列一下,这样。大家理解起源代码来,会节省很多其它的时间。

1. 聊天记录的本地存储採用的是Sqlite数据库。服务端存储眼下是在内存中虚拟的数据库。

2. 从server读取聊天记录,使用的是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.2 源代码下载  

   下载最新版本号,请转到这里

部署说明:

1.当前版本号服务端默认配置为内存虚拟数据库版本号,不须要安装数据库。

2.将GG2014.Server目录复制到server上,执行GG2014.Server.exe。

3.改动client配置文件GG2014.exe.config中ServerIP配置项的值为server的IP。

4.执行client,注冊帐号登录试用。

5.内置測试帐号为 10000,10001,10002。10003。10004。password都是 1。

可以部署在广域网执行QQ高仿版 GG2014 (源代码)的更多相关文章

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

    距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基 ...

  2. 即时通信系统中实现全局系统通知,并与Web后台集成【附C#开源即时通讯系统(支持广域网)——QQ高仿版IM最新源码】

    像QQ这样的即时通信软件,时不时就会从桌面的右下角弹出一个小窗口,或是显示一个广告.或是一个新闻.或是一个公告等.在这里,我们将其统称为“全局系统通知”.很多使用C#开源即时通讯系统——GGTalk的 ...

  3. 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】

    加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...

  4. 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】

    记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...

  5. 可在广域网部署运行的QQ高仿版 -- GGTalk总览

     (最新版本:V5.5,2016.12.06  增加对MySQL数据库的支持.) (android移动端:2015.09.24 最初发布 ,2016.11.25 最后更新) GGTalk(简称GG)是 ...

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

    在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试, ...

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

    自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一 ...

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

    距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bu ...

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

    自从上次版本(GG叽叽V3.2,增加离线消息.离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性.这次版本更新的内容主要是为GG增加了系统 ...

随机推荐

  1. Android 布局之LinearLayout 子控件weight权重的作用详析(转)

    关于Android开发中的LinearLayout子控件权重android:layout_weigh参数的作用,网上关于其用法有两种截然相反说法: 说法一:值越大,重要性越高,所占用的空间越大: 说法 ...

  2. SQL Server Compact免安装部署

    原文:SQL Server Compact免安装部署 情况 应用程序中的EF使用了SQL Server Compact,打包部署到客户机器上后提示数据库连接异常,信息类似”配置节“.”Provider ...

  3. cocoa动态方法决议及消息转发

    假设给一个对象发送不能响应的消息,同一时候又没有进行动态方法决议,又没实现消息转发,那么就会引发以下的crash信息 2014-07-30 15:47:54.434 MethodNotFind[171 ...

  4. Failed to load libGL.so问题解决

    Ubuntu 14.04下启动模拟设备Android 4.2.2的时候报错: failed to load libgl.so 先用locate 命令定位libGL库, 然后加入�一个链接就可以: de ...

  5. 为了找到自己的路——leo锦书62

    <Leo锦书(文章1编辑)>百度已经降落阅读,今后将继续更新.免费下载:http://t.cn/RvawZEx 柯克•卡梅隆是谁呢?在中国听过这名字的人预计不多.但看下封面我们马下就会说: ...

  6. maven 项目中使用 jstl标签

    在pom.xml文件下面增加如下的依赖包: <dependency> <groupId>javax.servlet</groupId> <artifactId ...

  7. Qt4.8在Windows下的三种编程环境搭建

    Qt4.8在Windows下的三种编程环境搭建 Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了X系统的各种Linux和Unix ...

  8. 【架构之路之WCF全析(一)】--服务协定及消息模式

    上周微软开公布会说.NET支持全然跨平台和并开放Core源代码的新闻,让我们顿时感到.NET要迎来它的春天.尽管早在几年前.NET就能开发Android和IOS,可是这次的跨平台把Linux都放到了微 ...

  9. POJ 1696 Space Ant(点积的应用)

    Space Ant 大意:有一仅仅蚂蚁,每次都仅仅向当前方向的左边走,问蚂蚁走遍全部的点的顺序输出.開始的点是纵坐标最小的那个点,開始的方向是開始点的x轴正方向. 思路:从開始点開始,每次找剩下的点中 ...

  10. windows phone (25) Canvas元素B

    原文:windows phone (25) Canvas元素B  ZIndex 这也是一个附加属性,表示canvas的children集合内的子元素的显示顺序,在canvas中的元素默认情况下是后面的 ...