RelaxingChat|前后端消息协议
Fang 2025/1/7 RelaxingChat
# 前后端协议
# /chat/msg 消息发送接口 请求
{
"roomId": 0, // 会话id
"msgType": 0, // 消息类型 1文本消息 2撤回消息 3图片消息 4文件 5语音 6视频
"body": {}, // 消息内容 类型不同则请求不同
}
1
2
3
4
5
2
3
4
5
# 1.文本消息
{
"msgType": 1,// 消息类型 1文本消息
"roomId": 0,// 会话id
"body": {
"content":"哈哈哈",// 文本消息内容
"replyMsgId":1,// 回复的消息id,如果没有则不用传
"atUidList":[10029]// @的uid集合
},
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
管理员有权限艾特全体成员,如果艾特的是全体成员,uid直接传0
# 2.撤回消息
{
"msgType": 2,// 消息类型 2撤回消息
"roomId": 0,// 会话id
"body": {},
}
1
2
3
4
5
2
3
4
5
# 3.图片消息
{
"msgType": 3,//消息类型 3图片消息
"roomId": 0,//会话id
"body": {
"size": 123,//大小(字节)
"width": 123,//宽度(像素)
"height": 123,//高度(像素)
"url": "www.baidu.com"//下载地址
},
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 4.文件消息
{
"msgType": 4,//消息类型 4文件消息
"roomId": 0,//会话id
"body": {
"size": 123,//大小(字节)
"fileName": "fileName",//文件名
"url": "www.baidu.com"//下载地址
},
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 5.语音消息
{
"msgType": 5,//消息类型 5语音消息
"roomId": 0,//会话id
"body": {
"size": 123,//大小(字节)
"second": 123,//时长(秒)
"url": "www.baidu.com"//下载地址
},
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 6.视频消息
{
"msgType": 5,//消息类型 5语音消息
"roomId": 0,//会话id
"body": {
"size": 123,//大小(字节)
"url": "www.baidu.com",//下载地址
"thumbWidth": 123,//缩略图宽度(像素)
"thumbHeight": 123,//缩略图高度(像素)
"thumbSize": 123,//缩略图大小(字节)
"thumbUrl": "www.baidu.com",//缩略图下载地址
}, //消息内容 根据类型不同请求不同
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# /chat/msg 消息发送接口 返回
{
"code": 0,
"message": "",
"data": {
"fromUser": {
"uid": "",
"username": "",
"avatar": "",
"locPlace": ""
},
"msg": {
"type": 0, //消息类型
"body": {},//消息内容不同的消息类型,内容体不同
"id": 0,
"messageMark": {
"dislikeCount": 0,
"likeCount": 0,
"userDislike": 0,
"userLike": 0
}
},
"sendTime": "",
},
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
以下皆为msg
的json格式
# 1.文本消息
{
"type": 1,//消息类型 1正常文本
"body": {
"content": "1",
"urlContentMap": {
"www.baidu.com": {
"title": "百度一下,你就知道",
"description": "全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求",
"image": "https://www.baidu.com/favicon.ico"
}
},
"atUidList":[1],//@的uid集合
"reply": {
"id": 1,
"username": "放",
"type": 1,
"body": "原消息已被撤回",//根据不同类型回复的消息展示也不同
"canCallback": 1,
"gapCount": 1
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 如果atUidList中有uid等于0,代表艾特全体成员处理
- 如果atUidList中有用户的uid,代表用户被艾特,需要有特殊效果,比如消息框变红等
# 2.撤回消息
{
"type": 2,//消息类型 2撤回消息
"body": "\"放\"撤回了一条消息"
}
1
2
3
4
2
3
4
# 3.图片消息
{
"type": 3,//消息类型 3图片消息
"body": {
"size": 123,//大小(字节)
"width": 123,//宽度(像素)
"height": 123,//高度(像素)
"url": "www.baidu.com"//下载地址
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 4.文件消息
{
"type": 4,//消息类型
"body": {
"size": 123,//大小(字节)
"fileName": "fileName",//文件名
"url": "www.baidu.com"//下载地址
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 5.语音消息
{
"type": 5,//消息类型
"body": {
"size": 123,//大小(字节)
"second": 123,//时长(秒)
"url": "www.baidu.com"//下载地址
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 6.视频消息
{
"type": 6,//消息类型
"body": {
"size": 123,//大小(字节)
"url": "www.baidu.com",//下载地址
"thumbWidth": 123,//缩略图宽度(像素)
"thumbHeight": 123,//缩略图高度(像素)
"thumbSize": 123,//缩略图大小(字节)
"thumbUrl": "www.baidu.com",//缩略图下载地址
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# websocket req请求
前端请求
# 1.登录请求二维码
# 2.心跳包
# 3.登录验证
{
"type":3,
"req": {
"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiIxMzI5NjYzNDY1N0AxNjMuY29tIiwicGFzc3dvcmQiOiI0MmEyNjJlYTJlMDA2OWY1NWY2OTY5MWE3OTc1OGMyMyIsImlzcyI6InJlbGF4aW5nIiwiZXhwIjoxNzM2NDE5NDc3fQ.k_uPuuD2uLAGciv56UlVg1FvvpsAL5u8pf4ZJGOIxVM"
}
}
1
2
3
4
5
6
2
3
4
5
6
# 4.邮箱登录请求
{
"type":4,
"req": {
"email":"xxx@qq.com"
}
}
1
2
3
4
5
6
2
3
4
5
6
# websocket res返回
后端返回
# 1.登录二维码返回
# 3.登录成功
在ws用户认证的时候,后端返回认证成功type=3,并返回用户信息、
{
"type": 3,
"res": {
"uid": 1,
"avatar": "...",
"token": "...",
"name": "放",
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 5.用户上下线通知
{
"type": 5,
"res": {
"uid": 1,
}
}
1
2
3
4
5
6
2
3
4
5
6