Closed zglbig closed 1 year ago
可以提供复现步骤吗,我在示例代码 https://github.com/iohao/ioGame-example 中没有能复现此错误。
你好 这是我刚刚搭的工程 https://gitee.com/zglbk/iogame-test.git
你好 这是我刚刚搭的工程 https://gitee.com/zglbk/iogame-test.git
可以访问了 刚刚设置成私有 然后unity客户端就添加了这个
private void Update() {
if (Input.GetKeyDown("x")) {
var loginVerify = new LoginVerify{
Age = 273676,
Jwt = "luoyi",
LoginBizCode = 1
};
var myExternalMessage = new MyExternalMessage{
CmdMerge = CmdMgr.getMergeCmd(3, 1),
DataContent = loginVerify.ToByteString(),
ProtocolSwitch = 0,
CmdCode = 1,
};
socket.SendAsync(myExternalMessage.ToByteArray());
}
}
造成这个问题原因是,两个不同的游戏逻辑服使用了相同的 name。
默认情况下,
模块名(逻辑服名) 注意,如果没设置 tag,此名也会是 tag 名
而 tag 是可以理解为同类型的游戏逻辑服的一个标识。 在 GameHallServer 中,你提供了 [3-1] 的 action 在 GameLoginServer 中,你提供了 [1-1] 的 action
由于使用了相同的 tag,框架会认为这是同一类型的逻辑服,那么在随机的负载均衡策略中会任选一个逻辑服来处理。比如客户端请求为 [3-1] ,当负载到 GameLoginServer 就找不到了,因为 GameLoginServer 中没有 [3-1] 的 action。
同样的,你在发送 1-1 时,有时也会找不到对应的 action ,因为有可能会将请求负载到 GameHallServer 来处理。
解决方法: 不同的游戏逻辑服类型不要使用相同的 tag。
感谢抽空回答
我使用多服务单进程启动之后使用unity客户端demo链接,但是同一个请求又是能拿到参数有时拿不到
拿不到参数
正常的