grpc 协议 proto 文件存放
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

236 lines
6.1 KiB

  1. syntax = "proto3";
  2. package pb;
  3. option go_package = "gim/pkg/pb/";
  4. enum PackageType {
  5. PT_UNKNOWN = 0; // 未知
  6. PT_SIGN_IN = 1; // 设备登录请求
  7. PT_SYNC = 2; // 消息同步触发
  8. PT_HEARTBEAT = 3; // 心跳
  9. PT_MESSAGE = 4; // 消息投递
  10. PT_SUBSCRIBE_ROOM = 5; // 订阅房间
  11. }
  12. /************************************消息体定义开始************************************/
  13. // 单条消息投递内容(估算大约100个字节),todo 通知栏提醒
  14. message Message {
  15. Sender sender = 1; // 发送者
  16. ReceiverType receiver_type = 2; // 接收者类型,1:user;2:group
  17. int64 receiver_id = 3; // 用户id或者群组id
  18. repeated int64 to_user_ids = 4; // 需要@的用户id列表
  19. MessageType message_type = 5; // 消息类型
  20. bytes message_content = 6; // 消息内容
  21. int64 seq = 7; // 用户消息发送序列号
  22. int64 send_time = 8; // 消息发送时间戳,精确到毫秒
  23. MessageStatus status = 9; // 消息状态
  24. }
  25. message Sender {
  26. SenderType sender_type = 1; // 发送者类型,1:系统,2:用户,3:第三方业务系统
  27. int64 sender_id = 2; // 发送者id
  28. int64 device_id = 3; // 发送者设备id
  29. string avatar_url = 4; // 头像
  30. string nickname = 5; // 昵称
  31. string extra = 6; // 扩展字段
  32. }
  33. // 消息类型
  34. enum MessageType {
  35. MT_UNKNOWN = 0; // 未知
  36. MT_TEXT = 1; // 文本
  37. MT_FACE = 2; // 表情
  38. MT_VOICE = 3; // 语音消息
  39. MT_IMAGE = 4; // 图片
  40. MT_FILE = 5; // 文件
  41. MT_LOCATION = 6; // 地理位置
  42. MT_COMMAND = 7; // 指令推送
  43. MT_CUSTOM = 8; // 自定义
  44. MT_RECALL = 9; // 撤回消息
  45. MT_RED_PACKAGE = 10; // 红包消息
  46. }
  47. // 红包类型
  48. enum RedPacketType {
  49. RPT_UNKNOWN = 0; // 未知
  50. RPT_FRIEND = 1; // 好友红包
  51. RPT_GROUP_NORMAL = 2; // 群组普通红包
  52. RPT_GROUP_LUCK = 3; // 群组手气红包
  53. RPT_GROUP_SPECIALLY = 4; // 群组专属红包
  54. RPT_SYSTEM_FOR = 5; // 系统红包
  55. }
  56. // 红包消息类型
  57. enum RedPacketMessageType {
  58. RMT_UNKNOWN = 0; // 未知
  59. RMT_SEND = 1; // 发红包
  60. RMT_GRAB = 2; // 抢红包
  61. }
  62. // 红包状态类型
  63. enum RedPacketStatusType {
  64. RPS_NOT_DRAW = 0; // 未领取
  65. RPS_DRAWING = 1; // 领取中
  66. RPS_DRAW_OVER = 2; // 领取完
  67. RPS_EXPIRE = 3; //已过期
  68. }
  69. // 文本消息
  70. message Text {
  71. string text = 1; // 文本消息内容
  72. }
  73. // 表情消息
  74. message Face {
  75. int64 face_id = 1;
  76. string face_url = 2;
  77. }
  78. // 语音消息
  79. message Voice {
  80. string id = 1; // 语音包id
  81. int32 size = 2; // 语音包大小
  82. int32 duration = 3; // 语音时长
  83. string url = 4; // 语音文件URL
  84. }
  85. // 图片消息
  86. message Image {
  87. string id = 1; // 图片id
  88. int32 width = 2; // 图片宽度
  89. int32 height = 3; // 图片长度
  90. string url = 4; // 图片URL
  91. string thumbnail_url = 5; // 图片缩略图url
  92. }
  93. // 文件消息
  94. message File {
  95. int64 id = 12; // 文件id
  96. string name = 13; // 文件名
  97. int64 size = 14; // 文件大小
  98. string url = 15; // 文件url
  99. int32 width = 16; // 文件宽度
  100. int32 height = 17; // 文件长度
  101. string thumbnail_url = 18; // 文件缩略图url
  102. }
  103. // 地理位置消息
  104. message Location {
  105. string desc = 1; // 描述
  106. double latitude = 2; // 经度
  107. double longitude = 3; // 纬度
  108. }
  109. // Command 指令推送,1000以下,IM内部用,1000以上,留给业务用
  110. message Command {
  111. int32 code = 1; // 指令码
  112. bytes data = 2; // 数据内容
  113. }
  114. // 自定义消息
  115. message Custom {
  116. string data = 1; // 自定义数据
  117. }
  118. // 撤回消息
  119. message RECALL {
  120. int64 recall_seq = 1; // 撤回消息seq
  121. }
  122. // 红包消息
  123. message RED_PACKAGE {
  124. RedPacketMessageType red_message_type = 1;// 红包消息类型
  125. RedPacketType red_packet_type = 2; // 红包类型
  126. string red_packet_content = 3; // 红包文字内容
  127. float red_packet_amount = 6; // 红包金额
  128. int32 red_packet_nums = 5; // 红包数量
  129. float red_packet_balance_amount = 7; // 红包余额
  130. int64 received_user_id = 8; // 领取用户id
  131. float received_user_amount = 9; // 领取用户金额
  132. string received_user_nickname = 10; // 领取用户昵称
  133. RedPacketStatusType red_packet_status_type = 11; // 领取状态
  134. int64 red_packet_id = 12; // 红包id
  135. int64 send_red_packet_uid = 13; // 红包发送者uid
  136. string send_red_packet_nickname = 14; // 红包发送者昵称
  137. string send_red_packet_avatar_url = 15; // 红包发送者头像
  138. string red_packet_small_content = 16; // 红包小文字内容
  139. string red_packet_cover = 17; // 红包封面
  140. }
  141. /************************************消息体定义结束************************************/
  142. // 上行数据
  143. message Input {
  144. PackageType type = 1; // 包的类型
  145. int64 request_id = 2; // 请求id
  146. bytes data = 3; // 数据
  147. }
  148. // 下行数据
  149. message Output {
  150. PackageType type = 1; // 包的类型
  151. int64 request_id = 2; // 请求id
  152. int32 code = 3; // 错误码
  153. string message = 4; // 错误信息
  154. bytes data = 5; // 数据
  155. }
  156. // 设备登录,package_type:1
  157. message SignInInput {
  158. int64 device_id = 1; // 设备id
  159. int64 user_id = 2; // 用户id
  160. string token = 3; // 秘钥
  161. }
  162. // 消息同步请求,package_type:2
  163. message SyncInput {
  164. int64 seq = 1; // 客户端已经同步的序列号
  165. }
  166. // 消息同步响应,package_type:2
  167. message SyncOutput {
  168. repeated Message messages = 1; // 消息列表
  169. bool has_more = 2; // 是否有更多数据
  170. }
  171. // 订阅房间请求
  172. message SubscribeRoomInput {
  173. int64 room_id = 1; // 房间ID,如果为0,取消房间订阅
  174. int64 seq = 2; // 消息消息序列号,
  175. }
  176. enum ReceiverType {
  177. RT_UNKNOWN = 0; // 未知
  178. RT_USER = 1; // 用户
  179. RT_GROUP = 2; // 群组
  180. RT_ROOM = 3; // 房间
  181. }
  182. // 消息投递,package_type:4
  183. message MessageSend {
  184. Message message = 1; // 消息
  185. }
  186. enum SenderType {
  187. ST_UNKNOWN = 0; // 未知的
  188. ST_SYSTEM = 1; // IM系统
  189. ST_USER = 2; // 用户
  190. ST_BUSINESS = 3; // 业务方
  191. }
  192. enum MessageStatus {
  193. MS_UNKNOWN = 0; // 未知的
  194. MS_NORMAL = 1; // 正常的
  195. MS_RECALL = 2; // 撤回
  196. }
  197. // 投递消息回执,package_type:4
  198. message MessageACK {
  199. int64 device_ack = 2; // 设备收到消息的确认号
  200. int64 receive_time = 3; // 消息接收时间戳,精确到毫秒
  201. }
  202. // 群组用户状态
  203. enum GroupUserStatusType {
  204. GROUP_USER_STATUS_NORMAL = 0; // 正常
  205. GROUP_USER_STATUS_Banned = 1; // 禁言
  206. }