mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-14 00:51:48 +08:00
add http and websocket
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
//用户信息结构
|
||||
@ -13,14 +14,11 @@ message UserInfo {
|
||||
|
||||
//聊天会话信息
|
||||
message ChatSessionInfo {
|
||||
//群聊会话不需要设置,单聊会话设置为对方用户ID
|
||||
optional string single_chat_friend_id = 1;
|
||||
optional string single_chat_friend_id = 1;//群聊会话不需要设置,单聊会话设置为对方ID
|
||||
string chat_session_id = 2; //会话ID
|
||||
string chat_session_name = 3;//会话名称git
|
||||
//会话上一条消息,新建的会话没有最新消息
|
||||
optional MessageInfo prev_message = 4;
|
||||
//会话头像 --群聊会话不需要,直接由前端固定渲染,单聊就是对方的头像
|
||||
optional bytes avatar = 5;
|
||||
optional MessageInfo prev_message = 4;//会话上一条消息,新建的会话没有最新消息
|
||||
optional bytes avatar = 5;//会话头像 --群聊会话不需要,直接由前端固定渲染,单聊就是对方的头像
|
||||
}
|
||||
|
||||
//消息类型
|
||||
@ -34,23 +32,18 @@ message StringMessageInfo {
|
||||
string content = 1;//文字聊天内容
|
||||
}
|
||||
message ImageMessageInfo {
|
||||
//图片文件id,客户端发送的时候不用设置,由transmit服务器进行设置后交给storage的时候设置
|
||||
optional string file_id = 1;
|
||||
//图片数据,在ES中存储消息的时候只要id不要文件数据, 服务端转发的时候需要原样转发
|
||||
optional bytes image_content = 2;
|
||||
optional string file_id = 1;//图片文件id,客户端发送的时候不用设置,由transmit服务器进行设置后交给storage的时候设置
|
||||
optional bytes image_content = 2;//图片数据,在ES中存储消息的时候只要id不要文件数据, 服务端转发的时候需要原样转发
|
||||
}
|
||||
message FileMessageInfo {
|
||||
optional string file_id = 1;//文件id,客户端发送的时候不用设置
|
||||
optional int64 file_size = 2;//文件大小
|
||||
optional string file_name = 3;//文件名称
|
||||
//文件数据,在ES中存储消息的时候只要id和元信息,不要文件数据, 服务端转发的时候也不需要填充
|
||||
optional bytes file_contents = 4;
|
||||
int64 file_size = 2;//文件大小
|
||||
string file_name = 3;//文件名称
|
||||
optional bytes file_contents = 4;//文件数据,在ES中存储消息的时候只要id和元信息,不要文件数据, 服务端转发的时候也不需要填充
|
||||
}
|
||||
message SpeechMessageInfo {
|
||||
//语音文件id,客户端发送的时候不用设置
|
||||
optional string file_id = 1;
|
||||
//文件数据,在ES中存储消息的时候只要id不要文件数据, 服务端转发的时候也不需要填充
|
||||
optional bytes file_contents = 2;
|
||||
optional string file_id = 1;//语音文件id,客户端发送的时候不用设置
|
||||
optional bytes file_contents = 2;//文件数据,在ES中存储消息的时候只要id不要文件数据, 服务端转发的时候也不需要填充
|
||||
}
|
||||
message MessageContent {
|
||||
MessageType message_type = 1; //消息类型
|
||||
@ -70,13 +63,18 @@ message MessageInfo {
|
||||
MessageContent message = 5;
|
||||
}
|
||||
|
||||
message Message {
|
||||
string request_id = 1;
|
||||
MessageInfo message = 2;
|
||||
}
|
||||
|
||||
message FileDownloadData {
|
||||
string file_id = 1;
|
||||
bytes file_content = 2;
|
||||
}
|
||||
|
||||
message FileUploadData {
|
||||
string file_name = 1; //文件名称
|
||||
int64 file_size = 2; //文件大小
|
||||
bytes file_content = 3; //文件数据
|
||||
string file_name = 1;
|
||||
int64 file_size = 2;
|
||||
bytes file_content = 3;
|
||||
}
|
||||
@ -1,9 +1,16 @@
|
||||
/*
|
||||
文件操作服务器的子服务注册信息: /service/file/instance_id
|
||||
服务名称:/service/file
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/file 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
|
||||
message GetSingleFileReq {
|
||||
string request_id = 1;
|
||||
string file_id = 2;
|
||||
@ -14,7 +21,7 @@ message GetSingleFileRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
optional FileDownloadData file_data = 4;
|
||||
FileDownloadData file_data = 4;
|
||||
}
|
||||
|
||||
message GetMultiFileReq {
|
||||
@ -27,11 +34,11 @@ message GetMultiFileRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
map<string, FileDownloadData> file_data = 4;//文件ID与文件数据的映射map
|
||||
repeated FileDownloadData file_data = 4;
|
||||
}
|
||||
|
||||
message PutSingleFileReq {
|
||||
string request_id = 1; //请求ID,作为处理流程唯一标识
|
||||
string request_id = 1;
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;
|
||||
FileUploadData file_data = 4;
|
||||
@ -40,7 +47,7 @@ message PutSingleFileRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
FileMessageInfo file_info = 4; //返回了文件组织的元信息
|
||||
FileMessageInfo file_info = 4;
|
||||
}
|
||||
|
||||
message PutMultiFileReq {
|
||||
@ -61,4 +68,4 @@ service FileService {
|
||||
rpc GetMultiFile(GetMultiFileReq) returns (GetMultiFileRsp);
|
||||
rpc PutSingleFile(PutSingleFileReq) returns (PutSingleFileRsp);
|
||||
rpc PutMultiFile(PutMultiFileReq) returns (PutMultiFileRsp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,30 +1,37 @@
|
||||
/*
|
||||
好友操作服务器的子服务注册信息: /service/friend/instance_id
|
||||
服务名称:/service/friend
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/friend 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
//好友列表获取
|
||||
message GetFriendListReq {
|
||||
string request_id = 1; // 请求标识ID
|
||||
optional string user_id = 2; // 当前请求的发起者用户ID
|
||||
optional string session_id = 3; //登录会话ID--用于网关进行身份识别--其他子服务用不到
|
||||
string request_id = 1;
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;
|
||||
}
|
||||
message GetFriendListRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
repeated UserInfo friend_list = 4; //要返回的用户信息
|
||||
repeated UserInfo friend_list = 4;
|
||||
}
|
||||
|
||||
//--------------------------------------
|
||||
//好友删除
|
||||
message FriendRemoveReq {
|
||||
string request_id = 1;
|
||||
optional string user_id = 2; //当前用户ID
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;
|
||||
string peer_id = 4; //要删除的好友ID
|
||||
string peer_id = 4;
|
||||
}
|
||||
message FriendRemoveRsp {
|
||||
string request_id = 1;
|
||||
@ -53,15 +60,14 @@ message FriendAddProcessReq {
|
||||
bool agree = 3;//是否同意好友申请
|
||||
string apply_user_id = 4; //申请人的用户id
|
||||
optional string session_id = 5;
|
||||
optional string user_id = 6; // 被申请人
|
||||
optional string user_id = 6;
|
||||
}
|
||||
// +++++++++++++++++++++++++++++++++
|
||||
message FriendAddProcessRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
// 同意后会创建会话,向网关返回会话信息,用于通知双方会话的建立,这个字段客户端不需要关注
|
||||
optional string new_session_id = 4;
|
||||
optional string new_session_id = 4; // 同意后会创建会话,向网关返回会话信息,用于通知双方会话的建立,这个字段客户端不需要关注
|
||||
}
|
||||
//--------------------------------------
|
||||
//获取待处理的,申请自己好友的信息列表
|
||||
@ -72,7 +78,7 @@ message GetPendingFriendEventListReq {
|
||||
}
|
||||
|
||||
message FriendEvent {
|
||||
optional string event_id = 1;
|
||||
string event_id = 1;
|
||||
UserInfo sender = 3;
|
||||
}
|
||||
message GetPendingFriendEventListRsp {
|
||||
|
||||
@ -1,11 +1,39 @@
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
option cc_generic_services = true;
|
||||
|
||||
/*
|
||||
消息推送使用websocket长连接进行
|
||||
websocket长连接转换请求:ws://host:ip/ws
|
||||
长连建立以后,需要客户端给服务器发送一个身份验证信息
|
||||
*/
|
||||
message ClientAuthenticationReq {
|
||||
string request_id = 1;
|
||||
string session_id = 2; // 用于向服务器表明当前长连接客户端的身份
|
||||
string session_id = 2;
|
||||
}
|
||||
message ClientAuthenticationRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
}
|
||||
|
||||
//通信接口统一采用POST请求实现,正文采用protobuf协议进行组织
|
||||
/*
|
||||
HTTP HEADER:
|
||||
POST /service/xxxxx
|
||||
Content-Type: application/x-protobuf
|
||||
Content-Length: 123
|
||||
|
||||
xxxxxx
|
||||
|
||||
-------------------------------------------------------
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/x-protobuf
|
||||
Content-Length: 123
|
||||
|
||||
xxxxxxxxxx
|
||||
*/
|
||||
|
||||
|
||||
//在客户端与网关服务器的通信中,使用HTTP协议进行通信
|
||||
// 通信时采用POST请求作为请求方法
|
||||
@ -50,4 +78,4 @@ message ClientAuthenticationReq {
|
||||
语音转文字 /service/speech/recognition
|
||||
}
|
||||
|
||||
*/
|
||||
*/
|
||||
|
||||
@ -1,3 +1,9 @@
|
||||
/*
|
||||
消息存储服务器的子服务注册信息: /service/message_storage/instance_id
|
||||
服务名称:/service/message_storage
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/message_storage 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
@ -52,4 +58,5 @@ service MsgStorageService {
|
||||
rpc GetHistoryMsg(GetHistoryMsgReq) returns (GetHistoryMsgRsp);
|
||||
rpc GetRecentMsg(GetRecentMsgReq) returns (GetRecentMsgRsp);
|
||||
rpc MsgSearch(MsgSearchReq) returns (MsgSearchRsp);
|
||||
|
||||
}
|
||||
39
proto/message_transmit.proto
Normal file
39
proto/message_transmit.proto
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
消息转发服务器的子服务注册信息: /service/message_transmit/instance_id
|
||||
服务名称:/service/message_transmit
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/message_transmit 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
//消息转发服务器接口
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
//这个用于和网关进行通信
|
||||
message NewMessageReq {
|
||||
string request_id = 1;
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;
|
||||
string chat_session_id = 4;
|
||||
MessageContent message = 5;
|
||||
}
|
||||
message NewMessageRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
}
|
||||
|
||||
//这个用于内部的通信,生成完整的消息信息,并获取消息的转发人员列表
|
||||
message GetTransmitTargetRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
MessageInfo message = 4;
|
||||
repeated string target_id_list = 5;
|
||||
}
|
||||
|
||||
service MsgTransmitService {
|
||||
rpc GetTransmitTarget(NewMessageReq) returns (GetTransmitTargetRsp);
|
||||
}
|
||||
43
proto/notify.proto
Normal file
43
proto/notify.proto
Normal file
@ -0,0 +1,43 @@
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
enum NotifyType {
|
||||
FRIEND_ADD_APPLY_NOTIFY = 0;
|
||||
FRIEND_ADD_PROCESS_NOTIFY = 1;
|
||||
CHAT_SESSION_CREATE_NOTIFY = 2;
|
||||
CHAT_MESSAGE_NOTIFY = 3;
|
||||
FRIEND_REMOVE_NOTIFY = 4;
|
||||
}
|
||||
|
||||
message NotifyFriendAddApply {
|
||||
UserInfo user_info = 1; //申请人信息
|
||||
}
|
||||
message NotifyFriendAddProcess {
|
||||
bool agree = 1;
|
||||
UserInfo user_info = 2; //处理人信息
|
||||
}
|
||||
message NotifyFriendRemove {
|
||||
string user_id = 1; //删除自己的用户ID
|
||||
}
|
||||
message NotifyNewChatSession {
|
||||
ChatSessionInfo chat_session_info = 1; //新建会话信息
|
||||
}
|
||||
message NotifyNewMessage {
|
||||
MessageInfo message_info = 1; //新消息
|
||||
}
|
||||
|
||||
|
||||
message NotifyMessage {
|
||||
optional string notify_event_id = 1;//通知事件操作id(有则填无则忽略)
|
||||
NotifyType notify_type = 2;//通知事件类型
|
||||
oneof notify_remarks { //事件备注信息
|
||||
NotifyFriendAddApply friend_add_apply = 3;
|
||||
NotifyFriendAddProcess friend_process_result = 4;
|
||||
NotifyFriendRemove friend_remove = 7;
|
||||
NotifyNewChatSession new_chat_session_info = 5;//会话信息
|
||||
NotifyNewMessage new_message_info = 6;//消息信息
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
message SpeechRecognitionReq {
|
||||
string request_id = 1; //请求ID
|
||||
bytes speech_content = 2; //语音数据
|
||||
optional string user_id = 3; //用户ID
|
||||
optional string session_id = 4; //登录会话ID -- 网关进行身份鉴权
|
||||
}
|
||||
|
||||
message SpeechRecognitionRsp {
|
||||
string request_id = 1; //请求ID
|
||||
bool success = 2; //请求处理结果标志
|
||||
optional string errmsg = 3; //失败原因
|
||||
optional string recognition_result = 4; //识别后的文字数据
|
||||
}
|
||||
|
||||
//语音识别Rpc服务及接口的定义
|
||||
service SpeechService {
|
||||
rpc SpeechRecognition(SpeechRecognitionReq) returns (SpeechRecognitionRsp);
|
||||
}
|
||||
28
proto/speech_recognition.proto
Normal file
28
proto/speech_recognition.proto
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
语音识别服务器的子服务注册信息: /service/speech/instance_id
|
||||
服务名称:/service/speech
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/speech 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
message SpeechRecognitionReq {
|
||||
string request_id = 1;
|
||||
bytes speech_content = 2;
|
||||
optional string user_id = 3;
|
||||
optional string session_id = 4;
|
||||
}
|
||||
|
||||
message SpeechRecognitionRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
string recognition_result = 4;
|
||||
}
|
||||
|
||||
service SpeechService {
|
||||
rpc SpeechRecognition(SpeechRecognitionReq) returns (SpeechRecognitionRsp);
|
||||
}
|
||||
@ -1,32 +0,0 @@
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
//这个用于和网关进行通信
|
||||
message NewMessageReq {
|
||||
string request_id = 1; //请求ID -- 全链路唯一标识
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;//客户端身份识别信息 -- 这就是消息发送者
|
||||
string chat_session_id = 4; //聊天会话ID -- 标识了当前消息属于哪个会话,应该转发给谁
|
||||
MessageContent message = 5; // 消息内容--消息类型+内容
|
||||
}
|
||||
message NewMessageRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
}
|
||||
|
||||
//这个用于内部的通信,生成完整的消息信息,并获取消息的转发人员列表
|
||||
message GetTransmitTargetRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
MessageInfo message = 4; // 组织好的消息结构 --
|
||||
repeated string target_id_list = 5; //消息的转发目标列表
|
||||
}
|
||||
|
||||
service MsgTransmitService {
|
||||
rpc GetTransmitTarget(NewMessageReq) returns (GetTransmitTargetRsp);
|
||||
}
|
||||
@ -1,6 +1,13 @@
|
||||
/*
|
||||
用户操作服务器的子服务注册信息: /service/user/instance_id
|
||||
服务名称:/service/user
|
||||
实例ID: instance_id 每个能够提供用户操作服务的子服务器唯一ID
|
||||
当服务发现的时候,通过 /service/user 进行服务发现,就可以发现所有的能够提供用户操作的实例信息了
|
||||
*/
|
||||
syntax = "proto3";
|
||||
package bite_im;
|
||||
import "base.proto";
|
||||
|
||||
option cc_generic_services = true;
|
||||
|
||||
//----------------------------
|
||||
@ -9,8 +16,8 @@ message UserRegisterReq {
|
||||
string request_id = 1;
|
||||
string nickname = 2;
|
||||
string password = 3;
|
||||
optional string verify_code_id = 4; //目前客户端实现了本地验证,该字段没用了
|
||||
optional string verify_code = 5;//目前客户端实现了本地验证,该字段没用了
|
||||
string verify_code_id = 4;
|
||||
string verify_code = 5;
|
||||
}
|
||||
message UserRegisterRsp {
|
||||
string request_id = 1;
|
||||
@ -23,8 +30,8 @@ message UserLoginReq {
|
||||
string request_id = 1;
|
||||
string nickname = 2;
|
||||
string password = 3;
|
||||
optional string verify_code_id = 4;
|
||||
optional string verify_code = 5;
|
||||
string verify_code_id = 4;
|
||||
string verify_code = 5;
|
||||
}
|
||||
message UserLoginRsp {
|
||||
string request_id = 1;
|
||||
@ -76,8 +83,8 @@ message PhoneLoginRsp {
|
||||
//其他个人/好友信息的获取在好友操作中完成
|
||||
message GetUserInfoReq {
|
||||
string request_id = 1;
|
||||
optional string user_id = 2; // 这个字段是网关进行身份鉴权之后填入的字段
|
||||
optional string session_id = 3; // 进行客户端身份识别的关键字段
|
||||
optional string user_id = 2;
|
||||
optional string session_id = 3;
|
||||
}
|
||||
message GetUserInfoRsp {
|
||||
string request_id = 1;
|
||||
@ -85,17 +92,6 @@ message GetUserInfoRsp {
|
||||
string errmsg = 3;
|
||||
UserInfo user_info = 4;
|
||||
}
|
||||
//内部接口
|
||||
message GetMultiUserInfoReq {
|
||||
string request_id = 1;
|
||||
repeated string users_id = 2;
|
||||
}
|
||||
message GetMultiUserInfoRsp {
|
||||
string request_id = 1;
|
||||
bool success = 2;
|
||||
string errmsg = 3;
|
||||
map<string, UserInfo> users_info = 4;
|
||||
}
|
||||
//----------------------------
|
||||
//用户头像修改
|
||||
message SetUserAvatarReq {
|
||||
@ -158,9 +154,8 @@ service UserService {
|
||||
rpc PhoneRegister(PhoneRegisterReq) returns (PhoneRegisterRsp);
|
||||
rpc PhoneLogin(PhoneLoginReq) returns (PhoneLoginRsp);
|
||||
rpc GetUserInfo(GetUserInfoReq) returns (GetUserInfoRsp);
|
||||
rpc GetMultiUserInfo(GetMultiUserInfoReq) returns (GetMultiUserInfoRsp);
|
||||
rpc SetUserAvatar(SetUserAvatarReq) returns (SetUserAvatarRsp);
|
||||
rpc SetUserNickname(SetUserNicknameReq) returns (SetUserNicknameRsp);
|
||||
rpc SetUserDescription(SetUserDescriptionReq) returns (SetUserDescriptionRsp);
|
||||
rpc SetUserPhoneNumber(SetUserPhoneNumberReq) returns (SetUserPhoneNumberRsp);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user