ChatX/API.md

159 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

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