Commit 5a87bbe73324054b567cae73a72a05956a55a1d0
1 parent
2e945c47
Improve websocket sending errors handling.
Showing
1 changed file
with
19 additions
and
11 deletions
@@ -40,10 +40,7 @@ import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint; | @@ -40,10 +40,7 @@ import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint; | ||
40 | import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; | 40 | import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; |
41 | import org.thingsboard.server.service.telemetry.TelemetryWebSocketSessionRef; | 41 | import org.thingsboard.server.service.telemetry.TelemetryWebSocketSessionRef; |
42 | 42 | ||
43 | -import javax.websocket.RemoteEndpoint; | ||
44 | -import javax.websocket.SendHandler; | ||
45 | -import javax.websocket.SendResult; | ||
46 | -import javax.websocket.Session; | 43 | +import javax.websocket.*; |
47 | import java.io.IOException; | 44 | import java.io.IOException; |
48 | import java.net.URI; | 45 | import java.net.URI; |
49 | import java.security.InvalidParameterException; | 46 | import java.security.InvalidParameterException; |
@@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr | @@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr | ||
222 | try { | 219 | try { |
223 | this.asyncRemote.sendText(msg, this); | 220 | this.asyncRemote.sendText(msg, this); |
224 | } catch (Exception e) { | 221 | } catch (Exception e) { |
225 | - log.error("[{}] Failed to send msg", session.getId(), e); | 222 | + log.trace("[{}] Failed to send msg", session.getId(), e); |
223 | + try { | ||
224 | + close(this.sessionRef, CloseStatus.SERVER_ERROR); | ||
225 | + } catch (IOException ioe) { | ||
226 | + log.trace("[{}] Session transport error", session.getId(), ioe); | ||
227 | + } | ||
226 | } | 228 | } |
227 | } | 229 | } |
228 | 230 | ||
229 | @Override | 231 | @Override |
230 | public void onResult(SendResult result) { | 232 | public void onResult(SendResult result) { |
231 | if (!result.isOK()) { | 233 | if (!result.isOK()) { |
232 | - log.error("[{}] Failed to send msg", session.getId(), result.getException()); | ||
233 | - } | ||
234 | - String msg = msgQueue.poll(); | ||
235 | - if (msg != null) { | ||
236 | - sendMsgInternal(msg); | 234 | + log.trace("[{}] Failed to send msg", session.getId(), result.getException()); |
235 | + try { | ||
236 | + close(this.sessionRef, CloseStatus.SERVER_ERROR); | ||
237 | + } catch (IOException ioe) { | ||
238 | + log.trace("[{}] Session transport error", session.getId(), ioe); | ||
239 | + } | ||
237 | } else { | 240 | } else { |
238 | - isSending = false; | 241 | + String msg = msgQueue.poll(); |
242 | + if (msg != null) { | ||
243 | + sendMsgInternal(msg); | ||
244 | + } else { | ||
245 | + isSending = false; | ||
246 | + } | ||
239 | } | 247 | } |
240 | } | 248 | } |
241 | } | 249 | } |