@@ -129,7 +129,8 @@ public struct ServerErr
129129 // 所有服务端错误码对应的错误描述
130130 public static Dictionary < UInt16 , ServerErr > serverErrs = new Dictionary < UInt16 , ServerErr > ( ) ;
131131
132- private System . DateTime _lastticktime = System . DateTime . Now ;
132+ private System . DateTime _lastTickTime = System . DateTime . Now ;
133+ private System . DateTime _lastTickCBTime = System . DateTime . Now ;
133134 private System . DateTime _lastUpdateToServerTime = System . DateTime . Now ;
134135
135136 // 玩家当前所在空间的id, 以及空间对应的资源
@@ -252,7 +253,8 @@ public virtual void reset()
252253 _entityIDAliasIDList . Clear ( ) ;
253254 _bufferedCreateEntityMessage . Clear ( ) ;
254255
255- _lastticktime = System . DateTime . Now ;
256+ _lastTickTime = System . DateTime . Now ;
257+ _lastTickCBTime = System . DateTime . Now ;
256258 _lastUpdateToServerTime = System . DateTime . Now ;
257259
258260 spaceID = 0 ;
@@ -317,13 +319,24 @@ public void sendTick()
317319 if ( ! loginappMessageImported_ && ! baseappMessageImported_ )
318320 return ;
319321
320- TimeSpan span = DateTime . Now - _lastticktime ;
322+ TimeSpan span = DateTime . Now - _lastTickTime ;
321323
322324 // 更新玩家的位置与朝向到服务端
323325 updatePlayerToServer ( ) ;
324326
325327 if ( span . Seconds > 15 )
326328 {
329+ span = _lastTickCBTime - _lastTickTime ;
330+
331+ // 如果心跳回调接收时间小于心跳发送时间,说明没有收到回调
332+ // 此时应该通知客户端掉线了
333+ if ( span . Seconds < 0 )
334+ {
335+ Dbg . ERROR_MSG ( "sendTick: Receive appTick timeout!" ) ;
336+ _networkInterface . close ( ) ;
337+ return ;
338+ }
339+
327340 Message Loginapp_onClientActiveTickMsg = null ;
328341 Message Baseapp_onClientActiveTickMsg = null ;
329342
@@ -349,10 +362,18 @@ public void sendTick()
349362 }
350363 }
351364
352- _lastticktime = System . DateTime . Now ;
365+ _lastTickTime = System . DateTime . Now ;
353366 }
354367 }
355-
368+
369+ /*
370+ 服务器心跳回调
371+ */
372+ public void Client_onAppActiveTickCB ( )
373+ {
374+ _lastTickCBTime = System . DateTime . Now ;
375+ }
376+
356377 /*
357378 与服务端握手,与任何一个进程连接之后应该第一时间进行握手
358379 */
0 commit comments