【Golang】动态路由 WebSocket 消息到 gRPC 服务 - 【续】

实现的效果

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值