golang-im聊天
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.

пре 2 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. syntax = "proto3";
  2. package pb;
  3. option go_package = "gim/pkg/pb/";
  4. message Empty{}
  5. service LogicInt {
  6. // 登录
  7. rpc ConnSignIn (ConnSignInReq) returns (Empty);
  8. // 消息同步
  9. rpc Sync (SyncReq) returns (SyncResp);
  10. // 设备收到消息回执
  11. rpc MessageACK (MessageACKReq) returns (Empty);
  12. // 设备离线
  13. rpc Offline (OfflineReq) returns (Empty);
  14. // 订阅房间
  15. rpc SubscribeRoom(SubscribeRoomReq)returns(Empty);
  16. // 发送消息
  17. rpc SendMessage (SendMessageReq) returns (SendMessageResp);
  18. // 推送消息到房间
  19. rpc PushRoom(PushRoomReq)returns(Empty);
  20. // 全服推送
  21. rpc PushAll(PushAllReq)returns(Empty);
  22. // 获取设备信息
  23. rpc GetDevice (GetDeviceReq) returns (GetDeviceResp);
  24. // 服务停止
  25. rpc ServerStop (ServerStopReq) returns (Empty);
  26. }
  27. message PushRoomReq{
  28. int64 room_id = 1; // 房间id
  29. MessageType message_type = 2; // 消息类型
  30. bytes message_content = 3; // 消息内容
  31. int64 send_time = 4; // 消息发送时间戳,精确到毫秒
  32. bool is_persist = 5; // 是否将消息持久化
  33. bool is_priority = 6; // 是否优先推送
  34. }
  35. message SendMessageResp {
  36. int64 seq = 1; // 消息序列号
  37. }
  38. message SendMessageReq {
  39. ReceiverType receiver_type = 1; // 接收者类型,1:user;2:group
  40. int64 receiver_id = 2; // 用户id或者群组id
  41. repeated int64 to_user_ids = 3; // 需要@的用户id列表
  42. MessageType message_type = 4; // 消息类型
  43. bytes message_content = 5; // 消息内容
  44. int64 send_time = 6; // 消息发送时间戳,精确到毫秒
  45. bool is_persist = 7; // 是否将消息持久化到数据库
  46. }
  47. enum ReceiverType {
  48. RT_UNKNOWN = 0; // 未知
  49. RT_USER = 1; // 用户
  50. RT_GROUP = 2; // 群组
  51. RT_ROOM = 3; // 房间
  52. }
  53. // 消息类型
  54. enum MessageType {
  55. MT_UNKNOWN = 0; // 未知
  56. MT_TEXT = 1; // 文本
  57. MT_FACE = 2; // 表情
  58. MT_VOICE = 3; // 语音消息
  59. MT_IMAGE = 4; // 图片
  60. MT_FILE = 5; // 文件
  61. MT_LOCATION = 6; // 地理位置
  62. MT_COMMAND = 7; // 指令推送
  63. MT_CUSTOM = 8; // 自定义
  64. }
  65. enum SenderType {
  66. ST_UNKNOWN = 0; // 未知的
  67. ST_SYSTEM = 1; // IM系统
  68. ST_USER = 2; // 用户
  69. ST_BUSINESS = 3; // 业务方
  70. }
  71. message Sender {
  72. SenderType sender_type = 1; // 发送者类型,1:系统,2:用户,3:第三方业务系统
  73. int64 sender_id = 2; // 发送者id
  74. int64 device_id = 3; // 发送者设备id
  75. string avatar_url = 4; // 昵称
  76. string nickname = 5; // 头像
  77. string extra = 6; // 扩展字段
  78. }
  79. // 单条消息投递内容(估算大约100个字节),todo 通知栏提醒
  80. message Message {
  81. Sender sender = 1; // 发送者
  82. ReceiverType receiver_type = 2; // 接收者类型,1:user;2:group
  83. int64 receiver_id = 3; // 用户id或者群组id
  84. repeated int64 to_user_ids = 4; // 需要@的用户id列表
  85. MessageType message_type = 5; // 消息类型
  86. bytes message_content = 6; // 消息内容
  87. int64 seq = 7; // 用户消息发送序列号
  88. int64 send_time = 8; // 消息发送时间戳,精确到毫秒
  89. MessageStatus status = 9; // 消息状态
  90. }
  91. enum MessageStatus {
  92. MS_UNKNOWN = 0; // 未知的
  93. MS_NORMAL = 1; // 正常的
  94. MS_RECALL = 2; // 撤回
  95. }
  96. message ConnSignInReq {
  97. int64 device_id = 1; // 设备id
  98. int64 user_id = 2; // 用户id
  99. string token = 3; // 秘钥
  100. string conn_addr = 4; // 服务器地址
  101. string client_addr = 5; // 客户端地址
  102. }
  103. message SyncReq {
  104. int64 user_id = 1; // 用户id
  105. int64 device_id = 2; // 设备id
  106. int64 seq = 3; // 客户端已经同步的序列号
  107. }
  108. message SyncResp {
  109. repeated Message messages = 1; // 消息列表
  110. bool has_more = 2; // 是否有更多数据
  111. }
  112. message MessageACKReq {
  113. int64 user_id = 1; // 用户id
  114. int64 device_id = 2; // 设备id
  115. int64 device_ack = 3; // 设备收到消息的确认号
  116. int64 receive_time = 4; // 消息接收时间戳,精确到毫秒
  117. }
  118. message OfflineReq {
  119. int64 user_id = 1; // 用户id
  120. int64 device_id = 2; // 设备id
  121. string client_addr = 3; // 客户端地址
  122. }
  123. message SubscribeRoomReq{
  124. int64 user_id = 1; // 用户id
  125. int64 device_id = 2; // 设备id
  126. int64 room_id = 3; // 房间id
  127. int64 seq = 4; // 消息序列号
  128. string conn_addr = 5; // 服务器地址
  129. }
  130. message PushAllReq{
  131. MessageType message_type = 1; // 消息类型
  132. bytes message_content = 2; // 消息内容
  133. int64 send_time = 3; // 消息发送时间戳,精确到毫秒
  134. }
  135. message GetDeviceReq {
  136. int64 device_id = 1;
  137. }
  138. message GetDeviceResp {
  139. Device device = 1;
  140. }
  141. message Device {
  142. int64 device_id = 1; // 设备id
  143. int64 user_id = 2; // 用户id
  144. int32 type = 3; // 设备类型,1:Android;2:IOS;3:Windows; 4:MacOS;5:Web
  145. string brand = 4; // 手机厂商
  146. string model = 5; // 机型
  147. string system_version = 6; // 系统版本
  148. string sdk_version = 7; // SDK版本
  149. int32 status = 8; // 在线状态,0:不在线;1:在线
  150. string conn_addr = 9; // 服务端连接地址
  151. string client_addr = 10; // 客户端地址
  152. int64 create_time = 11; // 创建时间
  153. int64 update_time = 12; // 更新时间
  154. }
  155. message ServerStopReq {
  156. string conn_addr = 1;
  157. }