forked from j62/ctbrec
1
0
Fork 0

Invalidate cache when a new websocket is opened

When a new connection is established (for example by the watchdog),
invalidate the caches. Also don't trigger a connect, if we are already
trying to connect.
This commit is contained in:
0xboobface 2018-11-21 14:20:37 +01:00
parent ea57d4faea
commit 0dbf319575
1 changed files with 8 additions and 1 deletions

View File

@ -59,6 +59,7 @@ public class MyFreeCamsClient {
private String chatToken; private String chatToken;
private int sessionId; private int sessionId;
private long heartBeat; private long heartBeat;
private volatile boolean connecting = false;
private EvictingQueue<String> receivedTextHistory = EvictingQueue.create(100); private EvictingQueue<String> receivedTextHistory = EvictingQueue.create(100);
@ -86,7 +87,7 @@ public class MyFreeCamsClient {
Thread watchDog = new Thread(() -> { Thread watchDog = new Thread(() -> {
while(running) { while(running) {
if (ws == null) { if (ws == null && !connecting) {
LOG.info("Websocket is null. Starting a new connection"); LOG.info("Websocket is null. Starting a new connection");
Request req = new Request.Builder() Request req = new Request.Builder()
.url(wsUrl) .url(wsUrl)
@ -126,11 +127,15 @@ public class MyFreeCamsClient {
} }
private WebSocket createWebSocket(Request req) { private WebSocket createWebSocket(Request req) {
connecting = true;
WebSocket ws = mfc.getHttpClient().newWebSocket(req, new WebSocketListener() { WebSocket ws = mfc.getHttpClient().newWebSocket(req, new WebSocketListener() {
@Override @Override
public void onOpen(WebSocket webSocket, Response response) { public void onOpen(WebSocket webSocket, Response response) {
super.onOpen(webSocket, response); super.onOpen(webSocket, response);
try { try {
connecting = false;
sessionStates.invalidateAll();
models.invalidateAll();
LOG.trace("open: [{}]", response.body().string()); LOG.trace("open: [{}]", response.body().string());
webSocket.send("hello fcserver\n"); webSocket.send("hello fcserver\n");
webSocket.send("fcsws_20180422\n"); webSocket.send("fcsws_20180422\n");
@ -147,6 +152,7 @@ public class MyFreeCamsClient {
@Override @Override
public void onClosed(WebSocket webSocket, int code, String reason) { public void onClosed(WebSocket webSocket, int code, String reason) {
super.onClosed(webSocket, code, reason); super.onClosed(webSocket, code, reason);
connecting = false;
LOG.info("MFC websocket closed: {} {}", code, reason); LOG.info("MFC websocket closed: {} {}", code, reason);
MyFreeCamsClient.this.ws = null; MyFreeCamsClient.this.ws = null;
if(!running) { if(!running) {
@ -157,6 +163,7 @@ public class MyFreeCamsClient {
@Override @Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) { public void onFailure(WebSocket webSocket, Throwable t, Response response) {
super.onFailure(webSocket, t, response); super.onFailure(webSocket, t, response);
connecting = false;
if(response != null) { if(response != null) {
int code = response.code(); int code = response.code();
String message = response.message(); String message = response.message();