Skip to content

Commit e2799a4

Browse files
authored
Merge pull request #12 from youngmonkeys/fix-ping-schedule-issue
fix: ping schedule issue
2 parents e93ca64 + 47fc3dc commit e2799a4

32 files changed

+216
-26
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,6 @@ repositories {
5555

5656
dependencies {
5757
//noinspection GradleDynamicVersion
58-
implementation "com.tvd12:ezyfox-server-android-client:1.0.1"
58+
implementation "com.tvd12:ezyfox-server-android-client:1.0.2"
5959
implementation "com.facebook.react:react-native:+" // From node_modules
6060
}

android/src/main/java/com/tvd12/ezyfoxserver/client/react/proxy/EzyCreateClientMethod.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.facebook.react.bridge.WritableMap;
88
import com.facebook.react.modules.core.DeviceEventManagerModule;
99
import com.tvd12.ezyfoxserver.client.EzyClient;
10+
import com.tvd12.ezyfoxserver.client.config.EzyPingConfig;
1011
import com.tvd12.ezyfoxserver.client.react.EzyMethodNames;
1112
import com.tvd12.ezyfoxserver.client.setup.EzySetup;
1213
import com.tvd12.ezyfoxserver.client.config.EzyClientConfig;
@@ -20,6 +21,8 @@
2021
import com.tvd12.ezyfoxserver.client.handler.EzyEventHandler;
2122
import com.tvd12.ezyfoxserver.client.react.serializer.EzyNativeSerializers;
2223

24+
import java.util.Map;
25+
2326
/**
2427
* Created by tavandung12 on 10/24/18.
2528
*/
@@ -62,6 +65,14 @@ private EzyClientConfig newConfig(ReadableMap params) {
6265
configBuilder.enableSSL(params.getBoolean("enableSSL"));
6366
if(params.hasKey("enableDebug"))
6467
configBuilder.enableDebug(params.getBoolean("enableDebug"));
68+
if(params.hasKey("ping")) {
69+
ReadableMap ping = params.getMap("ping");
70+
EzyPingConfig.Builder pingConfigBuilder = configBuilder.pingConfigBuilder();
71+
if(ping.hasKey("pingPeriod"))
72+
pingConfigBuilder.pingPeriod(ping.getInt("pingPeriod"));
73+
if(ping.hasKey("maxLostPingCount"))
74+
pingConfigBuilder.maxLostPingCount(ping.getInt("maxLostPingCount"));
75+
}
6576
if(params.hasKey("reconnect")) {
6677
ReadableMap reconnect = params.getMap("reconnect");
6778
EzyReconnectConfig.Builder reconnectConfigBuilder = configBuilder.reconnectConfigBuilder();

android/src/main/java/com/tvd12/ezyfoxserver/client/react/serializer/EzyClientConfigSerializer.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.facebook.react.bridge.ReadableMap;
55
import com.facebook.react.bridge.WritableMap;
66
import com.tvd12.ezyfoxserver.client.config.EzyClientConfig;
7+
import com.tvd12.ezyfoxserver.client.config.EzyPingConfig;
78
import com.tvd12.ezyfoxserver.client.config.EzyReconnectConfig;
89

910
/**
@@ -16,12 +17,20 @@ public ReadableMap serialize(EzyClientConfig config) {
1617
WritableMap map = Arguments.createMap();
1718
map.putString("clientName", config.getClientName());
1819
map.putString("zoneName", config.getZoneName());
19-
WritableMap reconnectMap = Arguments.createMap();
20+
21+
EzyPingConfig pingConfig = config.getPing();
22+
WritableMap pingMap = Arguments.createMap();
23+
pingMap.putInt("maxLostPingCount", pingConfig.getMaxLostPingCount());
24+
pingMap.putInt("pingPeriod", (int)pingConfig.getPingPeriod());
25+
map.putMap("ping", pingMap);
26+
2027
EzyReconnectConfig reconnectConfig = config.getReconnect();
28+
WritableMap reconnectMap = Arguments.createMap();
2129
reconnectMap.putInt("maxReconnectCount", reconnectConfig.getMaxReconnectCount());
2230
reconnectMap.putInt("reconnectPeriod", reconnectConfig.getReconnectPeriod());
2331
reconnectMap.putBoolean("enable", reconnectConfig.isEnable());
2432
map.putMap("reconnect", reconnectMap);
33+
2534
return map;
2635
}
2736

android/src/main/java/com/tvd12/ezyfoxserver/client/react/serializer/EzyEventSerializer.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public WritableMap apply(EzyEvent event) {
5252
public WritableMap apply(EzyEvent event) {
5353
EzyConnectionFailureEvent mevent = (EzyConnectionFailureEvent)event;
5454
WritableMap map = Arguments.createMap();
55-
map.putString("reason", mevent.getReason().toString());
55+
map.putInt("reason", mevent.getReason().getId());
5656
return map;
5757
}
5858
});
@@ -61,9 +61,7 @@ public WritableMap apply(EzyEvent event) {
6161
public WritableMap apply(EzyEvent event) {
6262
EzyDisconnectionEvent mevent = (EzyDisconnectionEvent)event;
6363
WritableMap map = Arguments.createMap();
64-
int reason = mevent.getReason();
65-
String reasonName = EzyDisconnectReasons.getDisconnectReasonName(reason);
66-
map.putString("reason", reasonName);
64+
map.putInt("reason", mevent.getReason());
6765
return map;
6866
}
6967
});

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"lint": "eslint ."
1111
},
1212
"dependencies": {
13-
"ezyfox-server-react-native-client": "^1.0.0-beta5",
13+
"ezyfox-server-react-native-client": "^1.0.1-beta2",
1414
"mvc-es6": "^1.1.1",
1515
"react": "17.0.1",
1616
"react-native": "0.64.2"

example/socket/SocketProxy.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ class SocketProxy {
1717
config.clientName = ZONE_NAME;
1818
config.enableSSL = true;
1919
config.enableDebug = true;
20+
config.ping.pingPeriod = 1000;
21+
config.ping.maxLostPingCount = 3;
22+
config.reconnect.reconnectPeriod = 1000;
23+
config.reconnect.maxReconnectCount = 10;
2024
let clients = Ezy.Clients.getInstance();
2125
clients.newDefaultClient(config, client => {
2226
this.doSetup(client);
@@ -68,12 +72,33 @@ class SocketProxy {
6872
routerController.updateViews('change', 'login');
6973
};
7074

75+
let lostPingHandler = {};
76+
lostPingHandler.handle = function (event) {
77+
console.log('lost ping: ' + JSON.stringify(event));
78+
};
79+
80+
let connectionFailureHandler = new Ezy.ConnectionFailureHandler();
81+
connectionFailureHandler.preHandle = function (event) {
82+
console.log('connection failed: ' + JSON.stringify(event));
83+
};
84+
85+
connectionFailureHandler.onConnectionFailed = function (event) {
86+
console.log(
87+
'disconnected due to connection failed: ' + JSON.stringify(event),
88+
);
89+
};
90+
7191
let setup = client.setup;
7292
setup.addEventHandler(
7393
Ezy.EventType.CONNECTION_SUCCESS,
7494
connectionSuccessHandler,
7595
);
96+
setup.addEventHandler(
97+
Ezy.EventType.CONNECTION_FAILURE,
98+
connectionFailureHandler,
99+
);
76100
setup.addEventHandler(Ezy.EventType.DISCONNECTION, disconnectionHandler);
101+
setup.addEventHandler(Ezy.EventType.LOST_PING, lostPingHandler);
77102
setup.addDataHandler(Ezy.Command.HANDSHAKE, handshakeHandler);
78103
setup.addDataHandler(Ezy.Command.LOGIN, loginSuccessHandler);
79104
setup.addDataHandler(Ezy.Command.LOGIN_ERROR, loginErrorHandler);

ios/EzyClient/proxy/EzyMethodProxy.mm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,23 @@
100100
EzyClientConfig* config = EzyClientConfig::create();
101101
NSString* clientName = [params valueForKey:@"clientName"];
102102
NSString* zoneName = [params valueForKey:@"zoneName"];
103+
NSDictionary* ping = [params valueForKey:@"ping"];
103104
NSDictionary* reconnect = [params valueForKey:@"reconnect"];
104105
if(clientName)
105106
config->setClientName([clientName UTF8String]);
106107
if(zoneName)
107108
config->setZoneName([zoneName UTF8String]);
109+
if(ping) {
110+
NSNumber* pingPeriod = [ping objectForKey:@"pingPeriod"];
111+
NSNumber* maxLostPingCount = [ping objectForKey:@"maxLostPingCount"];
112+
EzyPingConfig* pingConfig = config->getPing();
113+
if(pingPeriod) {
114+
pingConfig->setPingPeriod((int)[pingPeriod integerValue]);
115+
}
116+
if(maxLostPingCount) {
117+
pingConfig->setMaxLostPingCount((int)[maxLostPingCount integerValue]);
118+
}
119+
}
108120
if(reconnect) {
109121
NSNumber* enable = [reconnect objectForKey:@"enable"];
110122
NSNumber* reconnectPeriod = [reconnect objectForKey:@"reconnectPeriod"];

ios/EzyClient/serializer/EzyClientConfigSerializer.mm

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,20 @@ - (NSDictionary *)serialize:(void *)value {
1818
NSDictionary* dict = [NSMutableDictionary dictionary];
1919
[dict setValue:[EzyNativeStrings newNSString:config->getClientName().c_str()] forKey:@"clientName"];
2020
[dict setValue:[EzyNativeStrings newNSString:config->getZoneName().c_str()] forKey:@"zoneName"];
21-
NSDictionary* reconnectDict = [NSMutableDictionary dictionary];
21+
22+
EzyPingConfig* pingConfig = config->getPing();
23+
NSDictionary* pingDict = [NSMutableDictionary dictionary];
24+
[pingDict setValue:[NSNumber numberWithInt:pingConfig->getPingPeriod()] forKey:@"pingPeriod"];
25+
[pingDict setValue:[NSNumber numberWithInt:pingConfig->getMaxLostPingCount()] forKey:@"maxLostPingCount"];
26+
[dict setValue:pingDict forKey:@"ping"];
27+
2228
EzyReconnectConfig* reconnectConfig = config->getReconnect();
29+
NSDictionary* reconnectDict = [NSMutableDictionary dictionary];
2330
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->getMaxReconnectCount()] forKey:@"maxReconnectCount"];
2431
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->getReconnectPeriod()] forKey:@"reconnectPeriod"];
2532
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->isEnable()] forKey:@"enable"];
2633
[dict setValue:reconnectDict forKey:@"reconnect"];
34+
2735
return dict;
2836
}
2937
@end

ios/EzyClient/serializer/EzyEventSerializer.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ -(NSDictionary*)serializeLostPingEvent: (EzyEvent*)event {
5353
EzyLostPingEvent* mevent = (EzyLostPingEvent*)event;
5454
NSDictionary* dict = [NSMutableDictionary dictionary];
5555
int count = mevent->getCount();
56-
[dict setValue:[NSNumber numberWithInt:count] forKey:@"reason"];
56+
[dict setValue:[NSNumber numberWithInt:count] forKey:@"count"];
5757
return dict;
5858
}
5959

6060
-(NSDictionary*)serializeTryConnectEvent: (EzyEvent*)event {
6161
EzyTryConnectEvent* mevent = (EzyTryConnectEvent*)event;
6262
NSDictionary* dict = [NSMutableDictionary dictionary];
6363
int count = mevent->getCount();
64-
[dict setValue:[NSNumber numberWithInt:count] forKey:@"reason"];
64+
[dict setValue:[NSNumber numberWithInt:count] forKey:@"count"];
6565
return dict;
6666
}
6767

0 commit comments

Comments
 (0)