实现的效果
1,通过配置过滤Websocket的某些方法
2,服务间grpc调用的时候,不关心是哪个服务,哪个链接,调用的方法是啥,只想统一处理,如:
ack, err := rpc.OnDirectCall(&ServerA.MethodA{Data1:data1})
ack, err := rpc.OnDirectCall(&ServerB.MethodB{Data1:data1})
全局函数映射表
首先,我们定义了一个全局的同步映射表gRpcFuncMap,用于存储所有注册的gRPC方法:
var gRpcFuncMap sync.Map
gRPC方法的元信息结构体
接下来,我们定义了一个结构体stGrpcMapBase,用于存储每个gRPC方法的元信息:
type stGrpcMapBase struct {
funccall reflect.Value
inParam reflect.Type
nameIn string
nameOut string
}
gRPC服务结构体
然后,我们定义了另一个结构体stGrpcStruct,用于管理gRPC服务的函数映射和消息分发:
type stGrpcStruct struct {
ServiceName string
clientConn *grpc.ClientConn
fucMapping sync.Map // map[string]*stGrpcMapBase
dirMapping sync.Map // map[s

最低0.47元/天 解锁文章
905

被折叠的 条评论
为什么被折叠?



