公告

微信

欢迎大家私信交流

Skip to content

前后端协议

消息类型说明

go
const (
 MsgTypeText   = 1 // 文本消息
 MsgTypeRecall = 2 // 撤回消息
 MsgTypeImg    = 3 // 图片消息
 MsgTypeFile   = 4 // 文件消息
 MsgTypeSound  = 5 // 语音消息
 MsgTypeVideo  = 6 // 视频消息
 MsgTypeEmoji  = 7 // 表情消息
 MsgTypeSystem = 8 // 系统消息
)

/chat/msg 消息发送接口 请求

请求参数

json
{
  "roomId": "123",  // 会话id,字符串类型
  "msgType": 0,      // 消息类型
  "body": {}        // 消息内容,根据消息类型不同而不同
}

以下皆为req的json格式

1. 文本消息

json
{
  "msgType": 1,
  "roomId": "123",
  "body": {
    "content": "消息内容",
    "replyMsgId": 1,  // 回复的消息id,如果没有则不用传
    "atUidList": [10029]  // @的uid集合,如果@全体成员,uid传0
  }
}

2. 撤回消息

json
{
  "msgType": 2,
  "roomId": "123",
  "body": {
    "msgId": 1,      // 要撤回的消息ID
    "roomId": 123,   // 房间ID
    "recallUid": 456 // 撤回操作的用户ID
  }
}

3. 图片消息

json
{
  "msgType": 3,
  "roomId": "123",
  "body": {
    "size": 123,    // 大小(字节)
    "width": 123,   // 宽度(像素)
    "height": 123,  // 高度(像素)
    "url": "https://example.com/image.jpg"  // 下载地址
  }
}

4. 文件消息

json
{
  "msgType": 4,
  "roomId": "123",
  "body": {
    "size": 123,             // 大小(字节)
    "fileName": "文件名.pdf", // 文件名
    "url": "https://example.com/file.pdf"  // 下载地址
  }
}

5. 语音消息

json
{
  "msgType": 5,
  "roomId": "123",
  "body": {
    "size": 123,      // 大小(字节)
    "duration": 123,  // 时长(秒)
    "url": "https://example.com/audio.mp3"  // 下载地址
  }
}

6. 视频消息

json
{
  "msgType": 6,
  "roomId": "123",
  "body": {
    "size": 123,                // 大小(字节)
    "url": "https://example.com/video.mp4",  // 下载地址
    "thumbnailWidth": 123,      // 缩略图宽度(像素)
    "thumbnailHeight": 123,     // 缩略图高度(像素)
    "thumbnailSize": 123,       // 缩略图大小(字节)
    "thumbnailUrl": "https://example.com/thumbnail.jpg",  // 缩略图下载地址
    "duration": 60             // 视频时长(秒)
  }
}

7. 表情消息

json
{
  "msgType": 7,
  "roomId": "123",
  "body": {
    "url": "https://example.com/emoji.gif"  // 表情URL
  }
}

/chat/msg 消息发送接口 返回

返回参数

json
{
  "code": 0,
  "message": "",
  "data": {
    "id": 123,                    // 消息ID
    "roomId": 123,                // 房间ID
    "senderId": 456,              // 发送者ID
    "senderName": "用户名",        // 发送者名称
    "senderAvatar": "头像URL",     // 发送者头像
    "sendTime": 1623123456789,    // 发送时间戳(毫秒)
    "msgType": 1,                 // 消息类型
    "body": {
      "content": "",              // 文本内容,默认为空字符串
      "urlContentMap": {},        // URL内容映射,默认为空对象
      "atUidList": [],            // @的uid集合,默认为空数组
      "url": "",                  // 视频/音频/图片/文件的URL,默认为空字符串
      "width": 0,                 // 视频/图片宽度,默认为0
      "height": 0,                // 视频/图片高度,默认为0
      "duration": 0,              // 视频/音频时长(秒),默认为0
      "thumbnailUrl": "",         // 缩略图URL,默认为空字符串
      "thumbnailWidth": 0,        // 缩略图宽度,默认为0
      "thumbnailHeight": 0        // 缩略图高度,默认为0
    },
    "mark": {                     
      "likeCount": 0,             // 点赞数
      "userLike": 0,              // 当前用户是否点赞
      "dislikeCount": 0,          // 踩数量
      "userDislike": 0            // 当前用户是否踩
    },
    "reply": {                    
      "msgId": 0,                 // 被回复的消息ID
      "senderName": "",           // 被回复消息的发送者名称
      "sendTime": 0,              // 被回复消息的发送时间
      "content": ""               // 被回复消息的内容
    },
    "recall": {                   
      "recallUid": 0,             // 撤回操作的用户ID
      "recallName": "",           // 撤回操作的用户名称
      "recallTime": 0             // 撤回时间
    }
  }
}

以下皆为res的json格式

1. 文本消息

json
{
  "msgType": 1,  // 消息类型 1文本消息
  "body": {
    "content": "消息内容",  // 文本内容
    "urlContentMap": {     // URL内容映射(如果消息中包含URL)
      "www.baidu.com": {
        "title": "百度一下,你就知道",
        "description": "全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求",
        "image": "https://www.baidu.com/favicon.ico"
      }
    }
  }
}

特殊说明:

  1. 如果 atUidList 中有 uid 等于 0,代表@全体成员
  2. 如果 atUidList 中有用户的 uid,代表用户被@,客户端需要有特殊效果处理

2. 撤回消息

json
{
  "msgType": 2,  // 消息类型 2撤回消息
  "body": "[消息已撤回]",  // 撤回提示文本
  "recall": {              // 撤回信息(如果是撤回消息)
      "recallUid": 0,       // 撤回操作的用户ID
      "recallName": "",     // 撤回操作的用户名称
      "recallTime": 0        // 撤回时间
    }
}

3. 图片消息

json
{
  "msgType": 3,  // 消息类型 3图片消息
  "body": {
    "content": "[图片]",  // 消息内容提示
    "size": 123,        // 大小(字节)
    "width": 123,       // 宽度(像素)
    "height": 123,      // 高度(像素)
    "url": "https://example.com/image.jpg"  // 下载地址
  }
}

4. 文件消息

json
{
  "msgType": 4,  // 消息类型 4文件消息
  "body": {
    "content": "[文件]",     // 消息内容提示
    "size": 123,            // 大小(字节)
    "fileName": "文件名.pdf", // 文件名
    "url": "https://example.com/file.pdf"  // 下载地址
  }
}

5. 语音消息

json
{
  "msgType": 5,  // 消息类型 5语音消息
  "body": 
    "content": "[语音]",   // 消息内容提示
    "size": 123,          // 大小(字节)
    "duration": 123,      // 时长(秒)
    "url": "https://example.com/audio.mp3"  // 下载地址
  
}

6. 视频消息

json
{
  "msgType": 6,  // 消息类型 6视频消息
  "body": {
    "content": "[视频]",           // 消息内容提示
    "size": 123,                  // 大小(字节)
    "url": "https://example.com/video.mp4",  // 下载地址
    "thumbnailWidth": 123,        // 缩略图宽度(像素)
    "thumbnailHeight": 123,       // 缩略图高度(像素)
    "thumbnailSize": 123,         // 缩略图大小(字节)
    "thumbnailUrl": "https://example.com/thumbnail.jpg",  // 缩略图下载地址
    "duration": 60               // 视频时长(秒)
  }
}

7. 表情消息

json
{
  "msgType": 7,  // 消息类型 7表情消息
  "body": {
    "content": "[表情]",  // 消息内容提示
    "url": "https://example.com/emoji.gif"  // 表情URL
  }
}

websocket req请求

前端请求

1.登录请求二维码

2.心跳包

3.登录验证

json
{
  "type":3,
  "req": {
    "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiIxMzI5NjYzNDY1N0AxNjMuY29tIiwicGFzc3dvcmQiOiI0MmEyNjJlYTJlMDA2OWY1NWY2OTY5MWE3OTc1OGMyMyIsImlzcyI6InJlbGF4aW5nIiwiZXhwIjoxNzM2NDE5NDc3fQ.k_uPuuD2uLAGciv56UlVg1FvvpsAL5u8pf4ZJGOIxVM"
  }
}

4.邮箱登录请求

json
{
  "type":4,
  "req": {
    "email":"xxx@qq.com"
  }
}

websocket res返回

后端返回

1.登录二维码返回

3.登录成功

在ws用户认证的时候,后端返回认证成功type=3,并返回用户信息、

json
{
  "type": 3,
  "res": {
    "uid": 1,
    "avatar": "...",
    "token": "...",
    "name": "放",
  }
}

5.用户上下线通知

json
{
  "type": 5,
  "res": {
    "uid": 1,
  }
}

上次更新于: