golang-im聊天
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

175 Zeilen
4.2 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. }
  45. // 文本消息
  46. message Text {
  47. string text = 1; // 文本消息内容
  48. }
  49. // 表情消息
  50. message Face {
  51. int64 face_id = 1;
  52. string face_url = 2;
  53. }
  54. // 语音消息
  55. message Voice {
  56. string id = 1; // 语音包id
  57. int32 size = 2; // 语音包大小
  58. int32 duration = 3; // 语音时长
  59. string url = 4; // 语音文件URL
  60. }
  61. // 图片消息
  62. message Image {
  63. string id = 1; // 图片id
  64. int32 width = 2; // 图片宽度
  65. int32 height = 3; // 图片长度
  66. string url = 4; // 图片URL
  67. string thumbnail_url = 5; // 图片缩略图url
  68. }
  69. // 文件消息
  70. message File {
  71. int64 id = 12; // 文件id
  72. string name = 13; // 文件名
  73. int64 size = 14; // 文件大小
  74. string url = 15; // 文件url
  75. }
  76. // 地理位置消息
  77. message Location {
  78. string desc = 1; // 描述
  79. double latitude = 2; // 经度
  80. double longitude = 3; // 纬度
  81. }
  82. // Command 指令推送,1000以下,IM内部用,1000以上,留给业务用
  83. message Command {
  84. int32 code = 1; // 指令码
  85. bytes data = 2; // 数据内容
  86. }
  87. // 自定义消息
  88. message Custom {
  89. string data = 1; // 自定义数据
  90. }
  91. /************************************消息体定义结束************************************/
  92. // 上行数据
  93. message Input {
  94. PackageType type = 1; // 包的类型
  95. int64 request_id = 2; // 请求id
  96. bytes data = 3; // 数据
  97. }
  98. // 下行数据
  99. message Output {
  100. PackageType type = 1; // 包的类型
  101. int64 request_id = 2; // 请求id
  102. int32 code = 3; // 错误码
  103. string message = 4; // 错误信息
  104. bytes data = 5; // 数据
  105. }
  106. // 设备登录,package_type:1
  107. message SignInInput {
  108. int64 device_id = 1; // 设备id
  109. int64 user_id = 2; // 用户id
  110. string token = 3; // 秘钥
  111. }
  112. // 消息同步请求,package_type:2
  113. message SyncInput {
  114. int64 seq = 1; // 客户端已经同步的序列号
  115. }
  116. // 消息同步响应,package_type:2
  117. message SyncOutput {
  118. repeated Message messages = 1; // 消息列表
  119. bool has_more = 2; // 是否有更多数据
  120. }
  121. // 订阅房间请求
  122. message SubscribeRoomInput {
  123. int64 room_id = 1; // 房间ID,如果为0,取消房间订阅
  124. int64 seq = 2; // 消息消息序列号,
  125. }
  126. enum ReceiverType {
  127. RT_UNKNOWN = 0; // 未知
  128. RT_USER = 1; // 用户
  129. RT_GROUP = 2; // 群组
  130. RT_ROOM = 3; // 房间
  131. }
  132. // 消息投递,package_type:4
  133. message MessageSend {
  134. Message message = 1; // 消息
  135. }
  136. enum SenderType {
  137. ST_UNKNOWN = 0; // 未知的
  138. ST_SYSTEM = 1; // IM系统
  139. ST_USER = 2; // 用户
  140. ST_BUSINESS = 3; // 业务方
  141. }
  142. enum MessageStatus {
  143. MS_UNKNOWN = 0; // 未知的
  144. MS_NORMAL = 1; // 正常的
  145. MS_RECALL = 2; // 撤回
  146. }
  147. // 投递消息回执,package_type:4
  148. message MessageACK {
  149. int64 device_ack = 2; // 设备收到消息的确认号
  150. int64 receive_time = 3; // 消息接收时间戳,精确到毫秒
  151. }