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 |
更换昵称 #
字段 | 类型 | 说明 |
---|---|---|
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