距上次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。

转载于:https://www.cnblogs.com/bhlsheji/p/5038829.html

可以部署在广域网执行QQ高仿版 GG2014 (源代码)相关推荐

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

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

  2. 可在广域网部署运行的QQ高仿版 -- GG叽叽(开源)

    以前一直有要做个像QQ这样的即时聊天程序的想法,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应该不大.当然,我的目标并不是做一个QQ高仿版的玩 ...

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

    前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...

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

    前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...

  5. 可在广域网部署运行的QQ高仿版 -- GG叽叽V1.8(源码)

    距离的GG 1.0发布已经三周了,这三周内,我利用业余时间为GG增加了视频聊天的功能.个人觉得进展有些缓慢,主要是因为大多数时间都花在了UI上.由于本人不会PS,所以图片素材都是从网上一个一个搜下来的 ...

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

    尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁 ...

  7. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)

    (前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...

  8. jenkins自动化打包部署,jenkins执行sh脚本不退出问题

    介绍 Jenkins是开源软件项目,主要用来自动化打包部署.使用jenkins彻底告别手动部署的麻烦与繁琐. 安装部署jenkins 官方下载地址 启动jenkins war包 登入jenkins 设 ...

  9. 企业运维实战--自动化运维Saltstack(上)之saltstack的安装部署、远程执行、grains和pillar详解以及Jinja模板的使用

    企业运维实战--自动化运维Saltstack(上) 前言 一.Saltstack安装部署 二.sls文件远程执行 saltstack安装httpd并启动 saltstack源码编译安装nginx 启动 ...

最新文章

  1. 新生选课系统使用指南
  2. 在 Ubuntu Natty 中解除系统托盘限制
  3. zentao双机(数据库备份)
  4. boost::sloan_ordering用法的测试程序
  5. leetcode 822. Card Flipping Game | 822. 翻转卡片游戏(Java)
  6. 我们如何使用CircleCI 2.0来构建Angular应用并将其部署到AWS S3
  7. Lsky Pro兰空图床程序网站PHP源码
  8. 怎么用c语言输入一串字符个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  9. 架构之美阅读笔记06
  10. Juno: 字体缩放
  11. CentOS7 python django框架 天天生鲜项目 搭建流程
  12. JSP不同情况下中文乱码解决问题
  13. vue倒计时插件(vue-flip-down)
  14. origin汉字问题与特殊符号
  15. 爬虫-用xpath爬取豆瓣图书的短评
  16. 二值化神经网络——BNN
  17. 简单文本API的解析(一言)
  18. mac excel 换行 快捷键
  19. 学之思开源考试系统 - 数据库设计文档
  20. FCoin币改试验区(主版C)筹备公告(5号)

热门文章

  1. MySQL 错误 #1113
  2. [linux]ps结果计算行数
  3. xml.etree ElementTree简介
  4. 在html页面中加入矢量图,HTML页面插入SVG的多种方式
  5. pythonsocket数据对接_python socket通信 网站之间数据交流
  6. 十一、探索性数据分析应用案例
  7. 6行代码!用Python将PDF转为word
  8. black:你的Python代码有点丑
  9. 阿里云网盘开放申请!非会员下载 10MB/s!
  10. 知乎上高赞的40个有趣回复,很精辟!