Try to instantly reconnect to WS on first error
This commit is contained in:
@@ -37,6 +37,7 @@ public class PushService extends Service {
|
|||||||
private Handler handler = null;
|
private Handler handler = null;
|
||||||
private WebSocket socket = null;
|
private WebSocket socket = null;
|
||||||
private Gson gson = null;
|
private Gson gson = null;
|
||||||
|
private long lastError = 0;
|
||||||
|
|
||||||
private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
|
private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -139,18 +140,30 @@ public class PushService extends Service {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
showNotification(-3, "WS Conn Failed", "The websocket connection failed, trying again in a minute: " + t.getMessage());
|
boolean recentErrored = recentErrored();
|
||||||
|
lastError = System.currentTimeMillis();
|
||||||
|
|
||||||
handler.postDelayed(new Runnable() {
|
if (recentErrored) {
|
||||||
@Override
|
Log.i("Waiting one minute to reconnect to the WebSocket (because WebSocket failed recently)");
|
||||||
public void run() {
|
showNotification(-3, "WebSocket connection failed", "The WebSocket connection failed, trying again in a minute: " + t.getMessage());
|
||||||
start();
|
handler.postDelayed(new Runnable() {
|
||||||
}
|
@Override
|
||||||
}, TimeUnit.MINUTES.toMillis(1));
|
public void run() {
|
||||||
|
start();
|
||||||
|
}
|
||||||
|
}, TimeUnit.MINUTES.toMillis(1));
|
||||||
|
} else {
|
||||||
|
Log.i("Trying to reconnect to WebSocket");
|
||||||
|
start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean recentErrored() {
|
||||||
|
return System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(1) < lastError;
|
||||||
|
}
|
||||||
|
|
||||||
private void showNotification(int id, String title, String message) {
|
private void showNotification(int id, String title, String message) {
|
||||||
Intent intent = new Intent(this, MainActivity.class);
|
Intent intent = new Intent(this, MainActivity.class);
|
||||||
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|||||||
Reference in New Issue
Block a user