Don't kill the ws in the keep-alive thread, if it is establishing a

connection
This commit is contained in:
0xboobface 2020-01-11 13:20:49 +01:00
parent f5ef7c7cc1
commit 3cf6038da0
1 changed files with 29 additions and 21 deletions

View File

@ -521,15 +521,20 @@ public class MyFreeCamsClient {
private void startKeepAlive(WebSocket ws) { private void startKeepAlive(WebSocket ws) {
Thread keepAlive = new Thread(() -> { Thread keepAlive = new Thread(() -> {
while (running) { while (running) {
LOG.trace("--> NULL to keep the connection alive");
try { try {
ws.send("0 0 0 0 0 -\n"); if (!connecting) {
LOG.trace("--> NULL to keep the connection alive");
ws.send("0 0 0 0 0 -\n");
long millisSinceLastMessage = System.currentTimeMillis() - heartBeat; long millisSinceLastMessage = System.currentTimeMillis() - heartBeat;
if (millisSinceLastMessage > TimeUnit.MINUTES.toMillis(2)) { if (millisSinceLastMessage > TimeUnit.MINUTES.toMillis(2)) {
LOG.info("No message since 2 mins. Restarting websocket"); LOG.info("No message since 2 mins. Restarting websocket");
ws.close(1000, ""); ws.close(1000, "");
MyFreeCamsClient.this.ws = null; MyFreeCamsClient.this.ws = null;
}
} else {
// we are establishing a new connection at the moment, not need to
// do anything
} }
Thread.sleep(TimeUnit.SECONDS.toMillis(15)); Thread.sleep(TimeUnit.SECONDS.toMillis(15));
@ -561,23 +566,10 @@ public class MyFreeCamsClient {
} }
public String getStreamUrl(SessionState state) { public String getStreamUrl(SessionState state) {
Integer camserv = Optional.ofNullable(state.getU()).map(User::getCamserv).orElse(-1);
String camservString = camserv.toString();
if (serverConfig.isOnWzObsVideoServer(state)) {
camservString = serverConfig.wzobsServers.get(camserv.toString());
} else if (serverConfig.isOnObsServer(state)) {
camservString = serverConfig.ngVideoServers.get(camserv.toString());
} else if (serverConfig.isOnHtml5VideoServer(state)) {
camservString = serverConfig.h5Servers.get(camserv.toString());
} else if (camserv > 500) {
camserv -= 500;
camservString = camserv.toString();
}
int userChannel = 100000000 + state.getUid(); int userChannel = 100000000 + state.getUid();
String phase = state.getU().getPhase() != null ? state.getU().getPhase() : "z"; String phase = state.getU().getPhase() != null ? state.getU().getPhase() : "z";
String phasePrefix = phase.equals("z") ? "" : '_' + phase; String phasePrefix = phase.equals("z") ? "" : '_' + phase;
String server = "video" + camservString.replaceAll("^\\D+", ""); String server = "video" + getCamServ(state).replaceAll("^\\D+", "");
boolean useHls = serverConfig.isOnObsServer(state); boolean useHls = serverConfig.isOnObsServer(state);
String streamUrl; String streamUrl;
boolean dontUseDash = !Config.getInstance().getSettings().mfcUseDash; boolean dontUseDash = !Config.getInstance().getSettings().mfcUseDash;
@ -601,6 +593,22 @@ public class MyFreeCamsClient {
return streamUrl; return streamUrl;
} }
private String getCamServ(SessionState state) {
Integer camserv = Optional.ofNullable(state.getU()).map(User::getCamserv).orElse(-1);
String camservString = camserv.toString();
if (serverConfig.isOnWzObsVideoServer(state)) {
camservString = serverConfig.wzobsServers.get(camserv.toString());
} else if (serverConfig.isOnObsServer(state)) {
camservString = serverConfig.ngVideoServers.get(camserv.toString());
} else if (serverConfig.isOnHtml5VideoServer(state)) {
camservString = serverConfig.h5Servers.get(camserv.toString());
} else if (camserv > 500) {
camserv -= 500;
camservString = camserv.toString();
}
return camservString;
}
public MyFreeCamsModel getModel(int uid) { public MyFreeCamsModel getModel(int uid) {
return models.getIfPresent(uid); return models.getIfPresent(uid);
} }