前言
通过上两篇的学习 我们已经了解了 服务端本地服务的注册, 服务端配置,协议 现在我们开始写服务端的核心逻辑
默认配置
我们先看下默认的配置
1 | go复制代码func defaultOptions() *Options { |
run
服务注册完毕之后 调用Run方法 启动服务
1 | go复制代码func (s *Server) Run(options ...Option) error { |
我们先回顾一下 上章讲的 握手逻辑
- 建立链接 通过非对称加密 传输 aes 密钥给服务端 (携带token)
- 服务端 验证 token 并记录 aes 密钥 后面与客户端交互 都采用对称加密
具体处理 链接 process (重点!!!)
1 | go复制代码func (s *Server) process(conn net.Conn) { |
具体处理 (重点!!!)
注意此RPC传输消息都是编码过的 要进行转码
- 第一层 为压缩编码
- 第二层 为加密编码
- 第三层 为序列化
1 | go复制代码func (s *Server) processResponse(xChannel *utils.XChannel, msg *protocol.Message, addr string, aesKey []byte) { |
调用具体方法
1 | go复制代码func (s *service) call(ctx *light.Context, mType *methodType, request, response reflect.Value) (err error) { |
这里就完成了服务端的基础逻辑了
专栏: juejin.cn/column/6986…
本文转载自: 掘金