Open CUMT-lty opened 11 months ago
作者您好,测试 /push/push 这个 api 层接口的时候,task 层遇到报错:INFO[0017] get rpc client err : no connect layer ip: 原因是在 /task/rpc.go 中的 connectRpc, err := RClient.GetRpcClientByServerId(serverId) 时,serverId 为空。 经过排查,发现此参数为空源头是在 logic 层 /logic/rpc.go 中执行 serverIdStr := RedisSessClient.Get(ctx, userSidKey).Val() 时,redis 中没有 userSidKey 这个变量值的 key,此 key 是以 "gochat_" 为前缀,定义为 config 中的常量,该常量只被使用过一次就是在 func (logic *Logic) getUserKey(authKey string) string 这个方法中,除此之外就没有了。
这里这个从 logic 层带到 task 层的 serverId 的作用是什么,代码衔接是否有逻辑上的错误。
根据消息内容(userId,roomId,serverId)可以定位用户目前在connect层那一个serverId上保持长链接,具体看 readme 文档中的:消息投递部分的解释
作者您好,测试 /push/push 这个 api 层接口的时候,task 层遇到报错:INFO[0017] get rpc client err : no connect layer ip: 原因是在 /task/rpc.go 中的 connectRpc, err := RClient.GetRpcClientByServerId(serverId) 时,serverId 为空。 经过排查,发现此参数为空源头是在 logic 层 /logic/rpc.go 中执行 serverIdStr := RedisSessClient.Get(ctx, userSidKey).Val() 时,redis 中没有 userSidKey 这个变量值的 key,此 key 是以 "gochat_" 为前缀,定义为 config 中的常量,该常量只被使用过一次就是在 func (logic *Logic) getUserKey(authKey string) string 这个方法中,除此之外就没有了。
这里这个从 logic 层带到 task 层的 serverId 的作用是什么,代码衔接是否有逻辑上的错误。