2.7 KiB
2.7 KiB
Socket API
Socket服务器运行在52006
端口。客户端连接后,可以发送JSON格式的消息。每个消息必须包含type
字段,表示操作类型。
消息格式
所有消息均为JSON格式,编码为UTF-8字符串发送。
1. 注册
- 请求:
{
"type": "register",
"username": string,
"password": string,
}
- 响应:
- 成功:
{
"type": "register",
"status": "succeed",
"message": "注册成功"
}
- 用户名已存在:
{
"type": "register",
"status": "error_0",
"message": "用户名已存在"
}
- 用户名格式错误:
{
"type": "register",
"status": "error_2",
"message": "用户名长度必须在2到20个字符之间"
}
- 密码格式错误:
{
"type": "register",
"status": "error_1",
"message": "密码长度必须在4到20个字符之间"
}
- 其他错误
{
"type" = "register",
"status" = "error_-1",
"message" = "用户名或密码不能为空"
}
2. 登录
- 请求:
{
"type": "login",
"username": string,
"password": string
}
- 响应:
- 成功:
{
"type" = "login",
"status" = "succeed",
"message" = "登录成功",
"username" = string,
"userid" = string
}
- 账号或密码错误:
{
"type" = "login",
"status" = "error_0",
"message" = "用户名或密码错误"
}
- 密码格式错误:
{
"type" = "login",
"status" = "error_1",
"message" = "密码长度不能超过20个字符"
}
- 用户名格式错误:
{
"type" = "login",
"status" = "error_2",
"message" = "用户名长度必须在2到20个字符之间"
}
- 其他错误:
{
"type" = "login",
"status" = "error_-1",
"message" = "用户名或密码不能为空"
}
3. 发送聊天消息
- 请求:
{
"type" = "chat";
"message" = string;
"msgtype" = MessageType; //MessageType定义在下面的条目上
"userid" = string;
"token" = null; // 可空,因为目前没搞这个。所以可以不用发送token。
}
- 响应:
- 成功:
{
"type" = "chat";
"userid" = "Unid";
"user" = "Unnamed";
"status" = string;
"message" = string;
"avatar" = null;
"msgtype" = MessageType; //MessageType定义在下面的条目上
"timestamp" = DateTime(例如:2025-06-15T12:41:26.6322042+08:00);
}
MessageType格式
MessageType在服务器的定义如下,可以先查看关于C# 枚举(Enum)的文章。
public enum MessageType
{
Text,
Image,//图片
File,//文件
System//系统信息
}
所以在MessageType.Text
的值为0
。以此类推,MessageTypeImage
值为1
.
表现在json文本中为
{
"msgtype" = 0
}
键为"msgtype"
的值为MessageType.Text
。