diff --git a/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java b/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java
index bfa262a..f85bbd9 100644
--- a/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java
+++ b/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java
@@ -40,10 +40,7 @@ import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint;
import org.thingsboard.server.service.telemetry.TelemetryWebSocketService;
import org.thingsboard.server.service.telemetry.TelemetryWebSocketSessionRef;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
-import javax.websocket.Session;
+import javax.websocket.*;
import java.io.IOException;
import java.net.URI;
import java.security.InvalidParameterException;
@@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr
try {
this.asyncRemote.sendText(msg, this);
} catch (Exception e) {
- log.error("[{}] Failed to send msg", session.getId(), e);
+ log.trace("[{}] Failed to send msg", session.getId(), e);
+ try {
+ close(this.sessionRef, CloseStatus.SERVER_ERROR);
+ } catch (IOException ioe) {
+ log.trace("[{}] Session transport error", session.getId(), ioe);
+ }
}
}
@Override
public void onResult(SendResult result) {
if (!result.isOK()) {
- log.error("[{}] Failed to send msg", session.getId(), result.getException());
- }
- String msg = msgQueue.poll();
- if (msg != null) {
- sendMsgInternal(msg);
+ log.trace("[{}] Failed to send msg", session.getId(), result.getException());
+ try {
+ close(this.sessionRef, CloseStatus.SERVER_ERROR);
+ } catch (IOException ioe) {
+ log.trace("[{}] Session transport error", session.getId(), ioe);
+ }
} else {
- isSending = false;
+ String msg = msgQueue.poll();
+ if (msg != null) {
+ sendMsgInternal(msg);
+ } else {
+ isSending = false;
+ }
}
}
}