Skip to content

Commit 7318852

Browse files
committed
客户端心跳回调实现
kbengine/kbengine#369
1 parent 5a09b35 commit 7318852

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

KBEngine.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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,7 +319,18 @@ public void sendTick()
317319
if(!loginappMessageImported_ && !baseappMessageImported_)
318320
return;
319321

320-
TimeSpan span = DateTime.Now - _lastticktime;
322+
TimeSpan span = _lastTickCBTime - _lastTickTime
323+
324+
// 如果心跳回调接收时间小于心跳发送时间,说明没有收到回调
325+
// 此时应该通知客户端掉线了
326+
if(span.Seconds < 0)
327+
{
328+
Dbg.ERROR_MSG("sendTick: Receive appTick timeout!");
329+
networkInterface.close();
330+
return;
331+
}
332+
333+
span = DateTime.Now - _lastTickTime;
321334

322335
// 更新玩家的位置与朝向到服务端
323336
updatePlayerToServer();
@@ -352,7 +365,15 @@ public void sendTick()
352365
_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

Comments
 (0)