|
|
@ -37,6 +37,7 @@ import org.thingsboard.server.config.WebSocketConfiguration; |
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
import org.thingsboard.server.service.security.model.UserPrincipal; |
|
|
import org.thingsboard.server.service.security.model.UserPrincipal; |
|
|
|
|
|
import org.thingsboard.server.service.telemetry.DefaultTelemetryWebSocketService; |
|
|
import org.thingsboard.server.service.telemetry.SessionEvent; |
|
|
import org.thingsboard.server.service.telemetry.SessionEvent; |
|
|
import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint; |
|
|
import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint; |
|
|
import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; |
|
|
import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; |
|
|
@ -57,6 +58,8 @@ import java.util.concurrent.ConcurrentHashMap; |
|
|
import java.util.concurrent.ConcurrentMap; |
|
|
import java.util.concurrent.ConcurrentMap; |
|
|
import java.util.concurrent.LinkedBlockingQueue; |
|
|
import java.util.concurrent.LinkedBlockingQueue; |
|
|
|
|
|
|
|
|
|
|
|
import static org.thingsboard.server.service.telemetry.DefaultTelemetryWebSocketService.NUMBER_OF_PING_ATTEMPTS; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
|
@TbCoreComponent |
|
|
@TbCoreComponent |
|
|
@Slf4j |
|
|
@Slf4j |
|
|
@ -229,10 +232,11 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr |
|
|
|
|
|
|
|
|
synchronized void sendPing(long currentTime) { |
|
|
synchronized void sendPing(long currentTime) { |
|
|
try { |
|
|
try { |
|
|
if (currentTime - lastActivityTime >= pingTimeout) { |
|
|
long timeSinceLastActivity = currentTime - lastActivityTime; |
|
|
|
|
|
if (timeSinceLastActivity >= pingTimeout) { |
|
|
log.warn("[{}] Closing session due to ping timeout", session.getId()); |
|
|
log.warn("[{}] Closing session due to ping timeout", session.getId()); |
|
|
closeSession(CloseStatus.SESSION_NOT_RELIABLE); |
|
|
closeSession(CloseStatus.SESSION_NOT_RELIABLE); |
|
|
} else { |
|
|
} else if (timeSinceLastActivity >= pingTimeout / NUMBER_OF_PING_ATTEMPTS) { |
|
|
this.asyncRemote.sendPing(PING_MSG); |
|
|
this.asyncRemote.sendPing(PING_MSG); |
|
|
} |
|
|
} |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
|