TWTTalk 实时聊天系统(1.0.1)

原创 2004年07月30日 08:20:00

TWTTalk 实时聊天系统(1.0.1)

By Mark

前言:

天外天现有聊天室不能满足聊友需要,现在准备更换此系统。

一、系统技术特性:

1、  跨平台:客户端和服务器端都可跨平台使用[windows,*nix, solaris  …]

2、  跨开发语言:可能使用JAVA, C ,C#开发客户端和服务器

3、  跨使用语言:中文,英文,韩文等。

4、  与数据库无关:不使用与特定数据库有关的数据库特性。

5、  开放开发过程:任何组织/个人均可参与设计和开发过程(但所有权归天外天所有)。

6、  开放源码:在开发过程中不断公开公布最新设计文档和最新代码。

二、系统功能特性:

1、  纯文本方式聊天:没有任何的附加游戏功能,没有表情图像。也不提供音频,视频功能。

2、  所有成员都可建立公共组和私有组。

3、  根据成员要求,可以永久保存其聊天记录,并提供适用于各种终端和查询服务。

4、  根据通讯协议,可以自行开发客户端。

5、  为安全和性能考虑,每一个IP只开一个线程(即只能同时与一个组聊天)。

6、  对私有组提供离线消息,而对公共组不提供;

7、  管理员通过对组的管理实现对用户的管理,并且只有通过组创建者的同意才能实现。

三、系统开发特性:

1、  面向对象,模块化开发。

2、  必须有强壮的注解,便于不断维护和升级。

3、  完备的测试功能函数,在系统运行时也能看到详细的测试信息。

四、实现:

现计划用JAVA(SWING,SOCKET)+XML+ORACLE 实现。


五、开发进度:

       1、5月:详细设计,开始招人。

       2、8-9月:出desktop app和applet界面及测试。

       3、10月初:开始投入使用及维护。

       4、说明:聊天通过协议进行,其他用户、组管理等都用jsp+javabean

六、数据库设计:

       1、用户表UserInfo{@表示用户可修改,!表示用户不可修改}

序列号

字段

数据类型

说明

1

UserId

Integer

用户ID{PK}!

2

UserName

Char(20)

用户名{用于登陆}@

3

NickName

Char(20)

用户昵称{用于显示}@

4

Password

Char(64)

密码{为md5加密过的密码}@

[要网络中传送的也是加密后的密码]

5

PassTips

Varchar(50)

密码提示@

6

Email

Varchar(40)

用户E-mail{PK}{发送注册密码}@

7

UserPic

Binary

自定义用户图片@

8

Gender

Integer

用户性别{1为男性,0为女性}@

9

DateOfBirth

DateTime

出生日期@

10

RegIP

Char(15)

注册时的IP地址

11

LastIP

Char(15)

最后一次登陆时的IP地址

12

RegTime

DateTime

注册时的时间

13

LastTime

DateTime

最后一次登陆的时间

14

LogCount

Integer

登陆次数, 默认为0

15

TalkPoints

Float

在线时间(分种), 默认为0

16

UserFlag

Integer

用户标记:0=>正常;1=>删除

默认为0

17

Comment

Varchar(255)

其他说明

       2、GroupUserRelation组/用户关系表 {规定每个用户最多只能创建5个组}

序列号

字段

数据类型

说明

1

GoupId

Integer

用户组ID{FK}

2

UserId

Integer

用户ID{FK}

3

UserFlag

Integer

标记

0:用户请求加入但未经创建者通过;

1:已经创建者同意加入;

2:已被创建者删除/禁止;

3:用户自行退出{若创建者退出,则GroupInfo.GroupFlag=1,即为删除};

3、分组表GroupInfo

序列号

字段

数据类型

说明

1

GroupId

Integer

用户分组ID{PK}

2

CreateUserId

Integer

组创建者ID

3

GroupName

Char(50)

用户组名称@

4

CreateTime

DateTime

创建时间

5

GroupFlag

Integer

标记{0:使用中;1:已经自杀;2:被管理员关闭)

6

GroupType

Integer

组类别:

0:公共组=>任何人匀可登入,其成员为所有用户,但在数据表(GroupUserRelation)中不存在,适用于有大量用户(>50)的组;

1:私有组=>加入需要有创建者同意,其成员在数据表(GroupUserRelation)中存在,适用于小量用户(<=50)的组;

7

Comment

Varchar(255)

其他说明@

4、  Message聊天纪录(消息表)

序列号

字段

数据类型

说明

1

Id

Integer

序列{PK}

2

SrcId

Integer

消息发送者ID

3

DesId

Integer

消息招收者ID

4

MessageBody

Varchar(255)

消息内容

5

TalkTime

Datetime

聊天时间(用户机器时间)

6

Flag

Integer

纪录标记:

0:成功发送到用户;

1:未成功发到用户;

七、通讯模型:

八、通讯连接操作流程:

1、服务器/客户端交互

2、服务器业务处理流程

说明:

①:如果是组创建者登陆,则更新在内存空间中的组信息;

②:从组/用户关系表(GroupUserRelation)中载入对应于该组的所有用户及其用户标记;

③:如果发送失败,将消息存入消息表(Message)中,且flag=1(未成功发到用户);
九、消息:(例子)

       1、本协议中的端口:44302(可以修改)

2、消息结构:

项目

说明

Message Header

消息头(所有消息公共包头)

Message Body

消息体

3、  消息头格式(Message Header)

序号

字段名

字节数

类型

描述

1

TotalLength

4

Unsigned  Integer

消息总长度(含消息头及消息体)

2

SrcUserId

4

Unsigned  Integer

消息发送者的用户ID。

3

Password

64

String

用户之MD5加密后的密码

4

DesUserId

4

Unsigned  Integer

消息接收用户的ID(用于私聊)

5

DesGroupId

4

Unsigned  Integer

消息接收组的ID

6

SequenceId

4

Unsigned Integer

消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)

7

CommandId

4

Unsigned Integer

命令或响应类型

8

Flag

4

Unsigned Integer

其他参数(用位表示)

4、  消息体(Message Body)

CONNECT_REQUEST

序号

字段名

字节数

属性

描述

1

Client_IPAddr

4

InetAddress(Unsigned Integer)

用户机器的IP地址。

2

Version

4

Unsigned Integer

双方协商的版本号(高1Byte表示主版本号,后2Byte表示次版本号,最后1Byte为更新版本号)。

3

Timestamp

8

Unsigned Integer

long

4

Flag

4

Unsigned Integer

参数

:目前的Version定为1.0。

       CONNECT_RESPONSE

序号

字段名

字节数

属性

描述

1

errno

1

Unsigned Integer

状态

0:正确

1:消息结构错

2:非法IP地址

3:版本太高

4~ :其他错误

2

Timestamp

8

Unsigned Integer

时间戳的明文,由客户端产生。long

3

Version

4

Unsigned Integer

服务器支持的最高版本号

十、人员需要:

       1、项目管理人员;

       2、本系统详细设计人员;

       3、jsp + javabean开发人员{开发用户/组管理及聊天纪录查询};

       4、oracle数据库管理人员;

       5、applet + socket开发人员{只实现在公共组里聊天的功能};

       6、swing + socket开发人员{实现所有功能};

十一、条件:

1、  专业、年级、性别、身高、肤色。。。不限;

2、  天外天人员/非天外天人员匀可;

3、  有实力,浓厚兴趣;

4、  特别想为此而吃苦;

5、  愿意接受天外天资深人员指导;

十二:联系方式:

       QQ:297601

       Email:mark_cui@126.com

thinkphp5实现在线聊天系统(一),有源码下载!

在线聊天系统,也叫即时聊天系统。是一种基于web端可以在线交互信息,便捷,实用的聊天系统。常见的在线聊天系统有webqq,ChatRoom,Facebook,Hi网页版等。这些系统的核心思想都是通过长...
  • youmypig
  • youmypig
  • 2017年05月16日 07:34
  • 1213

聊天室的实现(消息实时刷新)

简单的对话框:实现消息的两秒一刷新,获取消息记录; 页面加载时,消息框中的滑块处于最低端,向上滑动可以查看历史信息,此时刷新信息的时候,不在刷新滑块,使其仍处于最底层,也就是说,当滑块滚动的时候,不在...
  • hpugym
  • hpugym
  • 2015年12月29日 17:15
  • 819

ThinkPHP应用--小型聊天系统

前面写了一篇ThinkPHP简单应用的博客,主要是熟悉一下ThinkPHP框架自动生成的各文件的作用,所以只用到了一个模块(即Index模块),一个完整的项目肯定不只一个模块(一个模块对应一个XxxA...
  • w_t_y_y
  • w_t_y_y
  • 2017年04月24日 20:14
  • 714

java Socket实现简单在线聊天(一)

最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下。 我计划的大致实现步骤分这样几大步: 1、使用awt组件和socket实现简单的单客户端向服务...
  • tuzongxun
  • tuzongxun
  • 2016年05月18日 12:20
  • 5941

基于PHP实现一个简单的在线聊天功能

一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻烦的是前端展..于是..需求分析要实现功能,首先要做前端,经过对比其他网站的在线聊天功能,发现除了基本的聊天功能以外,还要注意以下...
  • qq_20417227
  • qq_20417227
  • 2016年11月24日 22:45
  • 11018

基于.Net平台开发的网页版实时聊天程序

空闲时间博主自己弄了个还算有趣的小玩意儿,是一个在线聊天的网站,先不多说,看看效果图。 用户在姓名栏输入自己的姓名(因为没有做注册的页面,所以姓名是自己输入的),内容的话在编译器的方框里面输...
  • u011846750
  • u011846750
  • 2015年10月20日 11:54
  • 1427

实时聊天软件常用架构

我把第一个问题选为:QQ的架构。呵呵,题目是不是有点大?QQ现在的最高在线用户数是1900万,我们来讨论一下要作一个这样的架构如何来作更好,大家积极发言,这也是我这个周末为自己选择的思考题,呵呵。大家...
  • a936676463
  • a936676463
  • 2013年05月20日 18:55
  • 6685

Oracle聊天系统设计

Oracle
  • xubenxismile
  • xubenxismile
  • 2016年05月03日 16:09
  • 7394

vue+websocket+express+mongodb实战项目(实时聊天)(二)

原项目地址:http://blog.csdn.net/blueblueskyhua/article/details/70807847github地址: https://github.com/hua19...
  • blueblueskyhua
  • blueblueskyhua
  • 2017年06月14日 18:13
  • 1842

基于HTML5 WebSocket,JavaEE 7在线聊天系统

当今的Web应用在我们的个人生活与商业应用中的各个方面已经表现出愈发重要的作用。这些应用包括社交媒体 网络、在线购物、商业应用,乃至家用电器的配置程序。虽然它的增长势头依然迅猛,但Web应用的用户体验...
  • qq_20545159
  • qq_20545159
  • 2016年07月27日 10:18
  • 2828
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TWTTalk 实时聊天系统(1.0.1)
举报原因:
原因补充:

(最多只允许输入30个字)