Skip to content

Commit 44e30f6

Browse files
yulingtianxiaphillwiggins
authored andcommitted
reconnect when resume. (#279)
1 parent 859204a commit 44e30f6

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

lib/src/network/parse_live_query.dart

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:convert';
22
import 'dart:io';
33

4+
import 'package:flutter/widgets.dart';
45
import 'package:web_socket_channel/io.dart';
56
import 'package:web_socket_channel/web_socket_channel.dart';
67
import 'package:connectivity/connectivity.dart';
@@ -30,7 +31,7 @@ class Subscription {
3031
}
3132
}
3233

33-
class Client {
34+
class Client with WidgetsBindingObserver {
3435
factory Client() => _getInstance();
3536
Client._internal(
3637
{bool debug, ParseHTTPClient client, bool autoSendSessionId}) {
@@ -57,6 +58,7 @@ class Client {
5758
reconnect();
5859
}
5960
});
61+
WidgetsBinding.instance.addObserver(this);
6062
}
6163
static Client get instance => _getInstance();
6264
static Client _instance;
@@ -83,6 +85,25 @@ class Client {
8385
_connectLiveQuery();
8486
}
8587

88+
int readyState() {
89+
if (_webSocket != null) {
90+
return _webSocket.readyState;
91+
}
92+
return WebSocket.connecting;
93+
}
94+
95+
@override
96+
void didChangeAppLifecycleState(AppLifecycleState state) {
97+
super.didChangeAppLifecycleState(state);
98+
switch (state) {
99+
case AppLifecycleState.resumed:
100+
reconnect();
101+
break;
102+
default:
103+
break;
104+
}
105+
}
106+
86107
Future<dynamic> disconnect() async {
87108
if (_webSocket != null && _webSocket.readyState == WebSocket.open) {
88109
if (_debug) {

0 commit comments

Comments
 (0)