This commit is contained in:
@@ -11,6 +11,7 @@ import com.wentch.redkale.util.*;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
import java.util.concurrent.atomic.*;
|
||||||
import java.util.logging.*;
|
import java.util.logging.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,6 +20,10 @@ import java.util.logging.*;
|
|||||||
*/
|
*/
|
||||||
public final class WebSocketEngine {
|
public final class WebSocketEngine {
|
||||||
|
|
||||||
|
private static final AtomicInteger sequence = new AtomicInteger();
|
||||||
|
|
||||||
|
private final int index;
|
||||||
|
|
||||||
private final String engineid;
|
private final String engineid;
|
||||||
|
|
||||||
private final Map<Serializable, WebSocketGroup> containers = new ConcurrentHashMap<>();
|
private final Map<Serializable, WebSocketGroup> containers = new ConcurrentHashMap<>();
|
||||||
@@ -32,6 +37,7 @@ public final class WebSocketEngine {
|
|||||||
protected WebSocketEngine(String engineid, Logger logger) {
|
protected WebSocketEngine(String engineid, Logger logger) {
|
||||||
this.engineid = engineid;
|
this.engineid = engineid;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
this.index = sequence.getAndIncrement();
|
||||||
this.finest = logger.isLoggable(Level.FINEST);
|
this.finest = logger.isLoggable(Level.FINEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,10 +50,12 @@ public final class WebSocketEngine {
|
|||||||
t.setDaemon(true);
|
t.setDaemon(true);
|
||||||
return t;
|
return t;
|
||||||
});
|
});
|
||||||
|
long delay = (liveinterval - System.currentTimeMillis() / 1000 % liveinterval) + index * 5;
|
||||||
scheduler.scheduleWithFixedDelay(() -> {
|
scheduler.scheduleWithFixedDelay(() -> {
|
||||||
getWebSocketGroups().stream().forEach(x -> x.sendEach(DEFAULT_PING_PACKET));
|
getWebSocketGroups().stream().forEach(x -> x.sendEach(DEFAULT_PING_PACKET));
|
||||||
}, (liveinterval - System.currentTimeMillis() / 1000 % liveinterval), liveinterval, TimeUnit.SECONDS);
|
if (finest) logger.finest(engineid + " ping...");
|
||||||
if (finest) logger.finest(this.getClass().getSimpleName() + "(" + engineid + ")" + " start keeplive(interval:" + liveinterval + "s) scheduler executor");
|
}, delay, liveinterval, TimeUnit.SECONDS);
|
||||||
|
if (finest) logger.finest(this.getClass().getSimpleName() + "(" + engineid + ")" + " start keeplive(delay:" + delay + ", interval:" + liveinterval + "s) scheduler executor");
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(WebSocket socket) {
|
void add(WebSocket socket) {
|
||||||
|
|||||||
Reference in New Issue
Block a user