Skip to content

jin716/mchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MChat - 基于Photobuf序列化的Netty聊天服务器

1.0 架构

1.2 部件

2.0 通讯协议

通讯报文列表

ACK_SC_ 既从服务端发到客户端(SC)的ACK报文

2.1 服务器-客户端通信协议

服务器询问客户端,要求注册:

客户端提交注册信息→服务端记录→返回注册成功→开始聊天

客户端未提交注册信息(超时ClientRegisterTimeOut)→服务端关闭当前连接

信息明细:

服务器要求注册 ACK_SC_REG_PING Message.TYPE = ACK Message.FLAG flag = 0

客户端注册信息 ACK_CS_REG_PONG Message.TYPE = ACK Message.FLAG flag = 1

3.0 报文结构

所有MChat内的报文,都遵循以下格式

type 报文类型,枚举类型,包含:TEXT,LOCATION,VOICE,IMAGE,ACK,ERROR

version 版本号,32位整形

from 发送方ID,64位整形

to 接受方ID,64位整形

bytes 数据主体

flag = 6 标志位,16位, 用于代表各种协议代码

hash = 7 哈希, 16,用于对报文进行校验,

3.1 报文结构

Head: 40 bytes


0-8: type | 8-15: version | 16-31 :hash | 32 - 63 : flag


64 - 127: from


128 - 191: to


192 - 255: data_length


256 - 257: time_to_live(default 1) | 258 - 139 : option


320 - (320 + data_length - 1) : data


4.0 报文流转

报文到达: 1. 是否能直接转发给最终客户端: 1.1 是:进行权限验证(黑名单,白名单) 1.1.1 权限验证通过 1.1.1.1 转发 1.1.1.1.1 转发成功[end] 1.1.1.1.2 转发失败 1.1.2 权限验证不通过:退回,权限标志 1.2 否: 1.2.1 TTL - 1 >= 0 1.2.2 发起查询广播:哪一台主机有客户端连接? 1.2.2.1 收到主机答复 1.2.2.1.1 转发到目标机 1.2.3 收不到主机答复 1.2.3.1 转发到持久化 1.2.3 TTL -1 < 0 1.2.3.1 转发到持久化

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published