动态路由 WebSocket 消息到 gRPC 服务 - 【Invoke】
有时候,我们需要将通过 WebSocket 收到的消息动态路由到不同的 gRPC 服务。需要支持动态删减服务,动态删减rpc方法。
这篇博客将介绍如何使用 Go 实现这一功能。我们将重点解析 CallInvoke 方法,该方法接受一个消息类型和数据,然后将其转发到相应的 gRPC 服务并返回结果。
代码解析
以下是 CallInvoke 方法的实现:
func CallInvoke(ttype string, datas []byte) ([]byte, string, error) {
var err error
array := strings.Split(ttype, ".")
servername := array[0]
method := array[1]
rpcConn := getRpcConnect(servername)
if st != nil {
req := &Common.Empty{}
ack := &Common.Empty{}
if err = proto.Unmarshal(datas, req); err != nil {
goto endFunc
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second30)
defer cancel()
funcName := strings.Replace(method, "Req", "", -1)
fullPath := fmt.Sprintf("/%s.%sService/%s", servername, servername, funcName)

最低0.47元/天 解锁文章
635

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



