This commit is contained in:
地平线
2015-09-21 11:04:22 +08:00
parent ed69bdc11b
commit 0e965aebe7

View File

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