TWTTalk 实时聊天系统(1.0.1)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值