This commit is contained in:
@@ -779,6 +779,15 @@ public abstract class WebSocket<G extends Serializable, T> {
|
||||
return this._runner == null ? 0 : this._runner.lastSendTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最后一次读取消息的时间
|
||||
*
|
||||
* @return long
|
||||
*/
|
||||
public long getLastReadTime() {
|
||||
return this._runner == null ? 0 : this._runner.lastReadTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最后一次发送PING消息的时间
|
||||
*
|
||||
|
||||
@@ -103,7 +103,7 @@ public class WebSocketEngine {
|
||||
final int intervalms = liveinterval * 1000;
|
||||
scheduler.scheduleWithFixedDelay(() -> {
|
||||
long now = System.currentTimeMillis();
|
||||
getLocalWebSockets().stream().filter(x -> (now - x.getLastSendTime()) > intervalms).forEach(x -> x.sendPing());
|
||||
getLocalWebSockets().stream().filter(x -> (now - x.getLastReadTime()) > intervalms).forEach(x -> x.sendPing());
|
||||
}, delay, liveinterval, TimeUnit.SECONDS);
|
||||
if (logger.isLoggable(Level.FINEST)) logger.finest(this.getClass().getSimpleName() + "(" + engineid + ")" + " start keeplive(wsmaxconns:" + wsmaxconns + ", delay:" + delay + "s, interval:" + liveinterval + "s) scheduler executor");
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ class WebSocketRunner implements Runnable {
|
||||
private final BiConsumer<WebSocket, Object> restMessageConsumer; //主要供RestWebSocket使用
|
||||
|
||||
protected long lastSendTime;
|
||||
|
||||
protected long lastReadTime;
|
||||
|
||||
WebSocketRunner(Context context, WebSocket webSocket, BiConsumer<WebSocket, Object> messageConsumer, AsyncConnection channel) {
|
||||
this.context = context;
|
||||
@@ -83,6 +85,7 @@ class WebSocketRunner implements Runnable {
|
||||
return;
|
||||
}
|
||||
if (readBuffer == null) return;
|
||||
lastReadTime = System.currentTimeMillis();
|
||||
readBuffer.flip();
|
||||
|
||||
WebSocketPacket onePacket = null;
|
||||
|
||||
Reference in New Issue
Block a user