场景:场景内有个计时器会不停给玩家发送某些消息,如果我突然关闭Gate, Map上的实体没感知到Gate挂了, 继续发送消息,kcp因为发送不出去,会缓存起来,最后缓存区爆掉, 即使后续启动Gate, Map的实体跟新的Gate已经没有绑定关系, 堆积的消息发过来也找不到Actor。 最后结果就是:地图实体变成僵尸。请问这种情况应该怎么处理?
对面进程都崩掉了,怎么都不可能保持绑定关系,只能重新连接,tcp也一样
egametang 内部连接是不是可以添加个机制,可以监听到断开或者异常,然后根据异常会做对应的逻辑呢。比如Gate断开了,就踢人。 不然好像没法单独启动某个进程,需要全部重启才能正常。
有这个错误码,你自己处理即可
egametang 现在使用的是KCP, session断开对方是没感知的。 TCP倒是可以知道谁断开了, 可能得走心跳机制。才能知道谁断开了。😀
tcp也不能保证能通知到
egametang
我发现内部连接,同一个进程 接收消息和发送消息session不是同一个。请教下为啥不能使用同一个session?
你的逻辑是怎么能推断出来一个进程内部只用一个Session
egametang 我的意思是: 现在进程间通信,同一个进程是两个session。发送和接收是不同的session。 是否可以用同一个session进程发送和接收。这样session断开就只要处理一次就行了。
这个问题之前已经回答过了,A发给B A创建session发给B,这个时候B要发给A,难道等A的Session连接过来再发送,B又怎么知道A连不连接过来?显然一个session收发是不可能的
egametang 明白了,谢谢