最近使用protobuf搭了些服务器,对protobuf的机制略感兴趣,所以研究了下。

大致分析没有什么复杂的

1 对定义的结构体生成消息封包协议

2 对定义的rpc函数生成接口定义

3 用户按protobuf的接口定义实现对应的调用接口

实现上,也颇简单比如如下的一个protobuf文件

// ConnectServerRequest和ConnectServerReply是客户端和服务端建立连接后的第一个RPC请求
// 该请求不包括认证过程,认证过程由Entity去处理,这个只是建立连接,从而启动Entity通信流程
message ConnectServerRequest {
    enum RequestType {
        NEW_CONNECTION = 0;    // 新登录
        RE_CONNECTION = 1;    // 断线快速重连
        BIND_AVATAR = 2;    // 重新绑定entity到avatar
    }
    optional bytes  routes = 1;     
    required RequestType type = 2;  // 认证类型
    optional bytes  deviceid = 3;  // 设备 id, 标示客户端,可用mac地址
    optional bytes  entityid = 4;     // 断线重连或者BIND_AVATAR的时候需要的avatar entity id
    optional bytes  authmsg = 5;     // 验证消息
}

// 客户端发给Gate服务器
service IGateService {
    // 连接服务器,进行认证
    rpc connect_server(ConnectServerRequest) returns (Void);
}
View Code

相关文章:

  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
  • 2022-12-23
  • 2022-01-11
  • 2021-04-03
猜你喜欢
  • 2022-12-23
  • 2022-01-24
  • 2021-05-12
  • 2021-09-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案