|
@@ -61,11 +61,18 @@ let LoginMgr = {
|
61
|
61
|
G.PublicMgr.emit(JMC.PUBLIC_MSG.DISCONNECTED);
|
62
|
62
|
},
|
63
|
63
|
|
|
64
|
+ //* ************* 事件侦听 ************* *//
|
|
65
|
+ _handleSocketOnConected () {
|
|
66
|
+ this._stopKeepalive();
|
|
67
|
+ // 请求授权令牌
|
|
68
|
+ this.requestAuthToken();
|
|
69
|
+ },
|
|
70
|
+
|
64
|
71
|
/**
|
65
|
72
|
* 收到登录成功事件
|
66
|
73
|
*
|
67
|
74
|
*/
|
68
|
|
- handleDidLoginSuccess () {
|
|
75
|
+ handleDidLoginSuccess () {
|
69
|
76
|
// 标记在线状态
|
70
|
77
|
this.isOnline = true;
|
71
|
78
|
// 重连计数重置
|
|
@@ -302,7 +309,7 @@ let LoginMgr = {
|
302
|
309
|
password: password
|
303
|
310
|
};
|
304
|
311
|
|
305
|
|
- G.NetworkMgr.sendHttpRequestToLoginServer('usr_login', info, this._responseLogin.bind(this));
|
|
312
|
+ G.NetworkMgr.sendHttpRequestToLoginServer('usr_login_by_phone', info, this._responseLogin.bind(this));
|
306
|
313
|
},
|
307
|
314
|
|
308
|
315
|
/**
|
|
@@ -363,6 +370,100 @@ let LoginMgr = {
|
363
|
370
|
// 将消息下发到ctrl中处理
|
364
|
371
|
cc.game.emit('e_nwk_usr_login', data);
|
365
|
372
|
},
|
|
373
|
+
|
|
374
|
+ /**
|
|
375
|
+ * 请求授权令牌
|
|
376
|
+ *
|
|
377
|
+ * @author Wetion
|
|
378
|
+ * @date 2019-03-26
|
|
379
|
+ */
|
|
380
|
+ requestAuthToken () {
|
|
381
|
+ let info = {
|
|
382
|
+ uid: this.loginData.uid,
|
|
383
|
+ token: this.loginData.token
|
|
384
|
+ };
|
|
385
|
+
|
|
386
|
+ G.NetworkMgr.sendSocketRequest('usr_auth_token', info, this._responseAuthToken.bind(this));
|
|
387
|
+ },
|
|
388
|
+ _responseAuthToken (data) {
|
|
389
|
+ let responseInfo = data.responseInfo;
|
|
390
|
+ if (responseInfo.code === 200) {
|
|
391
|
+ this.keepaliveTime = this.loginData.sysTime;
|
|
392
|
+ this._startKeepalive();
|
|
393
|
+
|
|
394
|
+ G.UserMgr.requestSelfInfo();
|
|
395
|
+ }
|
|
396
|
+ },
|
|
397
|
+
|
|
398
|
+ // 启动心跳,4 * 30秒后发出第一条心跳
|
|
399
|
+ _startKeepalive () {
|
|
400
|
+ this._stopKeepalive();
|
|
401
|
+
|
|
402
|
+ this.keepaliveTimeoutCount = 0;
|
|
403
|
+ this._keepaliveIntervalId = setInterval(() => {
|
|
404
|
+ this.keepaliveTimeoutCount++;
|
|
405
|
+
|
|
406
|
+ /**
|
|
407
|
+ * 定时器30秒执行一次
|
|
408
|
+ * 4 * 30秒间隔发一次保活请求
|
|
409
|
+ * 发送保活请求后30秒没返回断开当前连接进行重连
|
|
410
|
+ */
|
|
411
|
+ if (this.keepaliveTimeoutCount == 4) {
|
|
412
|
+ // G.LogUtils.log('发送心跳');
|
|
413
|
+ this._requestKeepalive();
|
|
414
|
+ } else if (this.keepaliveTimeoutCount == 5) {
|
|
415
|
+ // G.LogUtils.log('心跳不通');
|
|
416
|
+ // 清空心跳定时器
|
|
417
|
+ clearInterval(this._keepaliveIntervalId);
|
|
418
|
+ this._keepaliveIntervalId = undefined;
|
|
419
|
+
|
|
420
|
+ // 断开网络并且弹出重连窗口
|
|
421
|
+ G.NetworkMgr.closeSocket();
|
|
422
|
+ G.AppUtils.getSceneCtrl().showOfflineAlert();
|
|
423
|
+ }
|
|
424
|
+ }, 30 * 1000);
|
|
425
|
+ },
|
|
426
|
+
|
|
427
|
+ /**
|
|
428
|
+ * 连接保活, 客户端主动60s发送一次
|
|
429
|
+ *
|
|
430
|
+ * @author Wetion
|
|
431
|
+ * @date 2019-03-26
|
|
432
|
+ */
|
|
433
|
+ _requestKeepalive () {
|
|
434
|
+ G.NetworkMgr.sendSocketRequest('h5user_keepalive', undefined, this._responseKeepalive.bind(this));
|
|
435
|
+ },
|
|
436
|
+ _responseKeepalive (data) {
|
|
437
|
+ let responseInfo = data.responseInfo;
|
|
438
|
+ if (responseInfo && responseInfo.systemTime) {
|
|
439
|
+ this.keepaliveTime = responseInfo.systemTime;
|
|
440
|
+
|
|
441
|
+ // 间隔多少秒请求一次保活
|
|
442
|
+ this.keepaliveTimeoutCount = 0;
|
|
443
|
+ }
|
|
444
|
+ },
|
|
445
|
+
|
|
446
|
+ // 重置心跳定时器
|
|
447
|
+ _stopKeepalive () {
|
|
448
|
+ if (this._keepaliveIntervalId) {
|
|
449
|
+ clearInterval(this._keepaliveIntervalId);
|
|
450
|
+ this._keepaliveIntervalId = undefined;
|
|
451
|
+ }
|
|
452
|
+ },
|
|
453
|
+
|
|
454
|
+ _connectGameServer (host, port) {
|
|
455
|
+ // 链接SOCKET
|
|
456
|
+ G.NetworkMgr.connectSocket(host, port);
|
|
457
|
+
|
|
458
|
+ // 增加HTTP_GAME连接
|
|
459
|
+ G.NetworkMgr.addConnection({
|
|
460
|
+ alias: '游戏服',
|
|
461
|
+ name: 'HTTP_GAME',
|
|
462
|
+ host: host,
|
|
463
|
+ port: port,
|
|
464
|
+ path: 'pb'
|
|
465
|
+ });
|
|
466
|
+ },
|
366
|
467
|
}
|
367
|
468
|
|
368
|
469
|
module.exports = LoginMgr;
|