This commit is contained in:
wentch
2015-12-30 17:19:54 +08:00
parent 0045b22bc0
commit 0d0903f02d
3 changed files with 24 additions and 12 deletions

View File

@@ -32,6 +32,7 @@ import org.redkale.net.*;
* 此模式下 以上方法都应该被重载。 * 此模式下 以上方法都应该被重载。
* <p> * <p>
* *
*
* @see http://www.redkale.org * @see http://www.redkale.org
* @author zhangjx * @author zhangjx
*/ */
@@ -130,6 +131,11 @@ public abstract class WebSocket {
return send(data, true); return send(data, true);
} }
public final int sendPing() {
//if (_engine.finest) _engine.logger.finest(this + " on "+_engine.getEngineid()+" ping...");
return send(WebSocketPacket.DEFAULT_PING_PACKET);
}
public final int sendPing(byte[] data) { public final int sendPing(byte[] data) {
return send(new WebSocketPacket(FrameType.PING, data)); return send(new WebSocketPacket(FrameType.PING, data));
} }

View File

@@ -5,7 +5,6 @@
*/ */
package org.redkale.net.http; package org.redkale.net.http;
import static org.redkale.net.http.WebSocketPacket.DEFAULT_PING_PACKET;
import static org.redkale.net.http.WebSocketServlet.DEFAILT_LIVEINTERVAL; import static org.redkale.net.http.WebSocketServlet.DEFAILT_LIVEINTERVAL;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
@@ -56,8 +55,7 @@ public final class WebSocketEngine {
}); });
long delay = (liveinterval - System.currentTimeMillis() / 1000 % liveinterval) + index * 5; 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.sendEachPing());
//if (finest) logger.finest(engineid + " ping...");
}, delay, liveinterval, TimeUnit.SECONDS); }, delay, liveinterval, TimeUnit.SECONDS);
if (finest) logger.finest(this.getClass().getSimpleName() + "(" + engineid + ")" + " start keeplive(delay:" + delay + ", interval:" + liveinterval + "s) scheduler executor"); if (finest) logger.finest(this.getClass().getSimpleName() + "(" + engineid + ")" + " start keeplive(delay:" + delay + ", interval:" + liveinterval + "s) scheduler executor");
} }

View File

@@ -101,6 +101,14 @@ public final class WebSocketGroup {
return rs; return rs;
} }
public final int sendEachPing() {
int rs = 0;
for (WebSocket s : list) {
rs |= s.sendPing();
}
return rs;
}
public final int sendRecent(Serializable message) { public final int sendRecent(Serializable message) {
return sendRecent(message, true); return sendRecent(message, true);
} }