SCS服务器

Simple Chat Server #

文档说明
目前适用版本1.0

服务器基于C#完成设计

协议文档只适用于SCS服务器

说明 #

一款简单的基于UDP/IP协议完成的聊天通信服务器。不限定客户端类型,通信消息格式采用UTF-8纯文本,未做协议加密压缩等。

协议消息均采用JSON格式,方便学习练习。

服务器未作复杂校验,未做过多容错操作。可能存在BUG,测试中需要注意线程死锁,或是线程崩溃问题。关于线程调度已经进行优化,尽量保证不不出现线程锁问题。未适用线程池,故不适合超过100用户量链接。

服务器通信协议采用HTTP和SOCKET,其中HTTP只是用POST

关于公网部署,可根据自身网络环境进行调整,不做说明。


协议名词 #

标记 说明
上行 表明从客户端向服务器端发送消息
下行 表明从服务器端向客户端发送消息
ID 每个协议都应该带有的字段,并且字段值在协议中唯一存在
通信类型 一般指Socket或是HTTP通信

协议结构 #

本服务器协议结构采用JSON方式通信,如更换协议结构可只替换协议层不用更换协议内容。

JSON结构为外层对象型,内层字段

{ "id" : "", ... }


协议表述(客户端上行) #

消息通过HTTP的POST传递

注册账号 #

字段 类型 说明
id int 1000
account string
password string

服务器注册账号

登录账号 #

字段 类型 说明
id int 1001
account string
password string

服务器登录账号


以下协议通过SOCKET通信

校验换取TOKEN #

当链接Chat服务器后,需要在1分钟内校验TOKEN并换取新的TOKEN,否则将会被踢下线。暂未增加IP访问冷静期限制。

上服务器后第一件事必须校验TOKEN否则无法做其他动作

字段 类型 说明
id int 1002
token string

服务器校验Token结果

更换昵称 #

字段 类型 说明
id int 1003
userName string

服务器更换昵称结果

发送群消息 #

字段 类型 说明
id int 1004
msg string

发送私密消息 #

字段 类型 说明
id int 1005
tName string 接收者名称
msg string

协议表述(服务端下行) #

错误消息 #

所有错误消息均走此协议,协议会告知上行消息错误ID,可以根据错误ID处理逻辑

字段 类型 说明
id int 40404
cId int 客户端上行ID
msg string 错误消息
errorId int 预留字段,用于后期拓展更多错误!

消息成立 #

所有无携带数据消息并成立,会通过此协议完成通知!

字段 类型 说明
id int 66666
cId int 客户端上行ID

登录账号 #

字段 类型 说明
id int 2000
code int 0
token string 每个用户登录聊天服务器的唯一标识(60秒超时)
ip string 聊天服务器地址
port number 聊天服务器端口

结果码描述:

  • 0 成功
  • 1 账号不存在
  • 2 密码错误
  • 3 未知错误

校验换取TOKEN #

字段 类型 说明
id int 2001
token string
userName string 服务器给你的临时昵称

收到消息 #

字段 类型 说明
id int 2002
type int 0世界,1私聊,2系统
msg string
origin string 消息发送者

用户上下线 #

字段 类型 说明
id int 2003
type int 0上线 1下线
name string 用户昵称

用户修改昵称 #

字段 类型 说明
id int 2004
old string 旧昵称
new string 新昵称

注册账号 #

字段 类型 说明
id int 2005
code int 结果码

结果码描述:

  • 0 成功
  • 1 账号已存在
  • 2 账号格式错误
  • 3 密码格式错误
  • 4 未知错误

上行测试消息 #

校验token #

{"id":1002, "token":"hxsd"}

更换昵称 #

{"id":1003, "userName":"测试员"}

发送群聊 #

{"id":1004, "msg":"这是群消息测试"}

发送私聊 #

{"id":1005, "tName":"xxx" ,"msg":"这是测试私聊消息!"}

测试账号 #

测试账号:test 密码:test