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 | 40 | import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; |
41 | 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 | 44 | import java.io.IOException; |
48 | 45 | import java.net.URI; |
49 | 46 | import java.security.InvalidParameterException; |
... | ... | @@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr |
222 | 219 | try { |
223 | 220 | this.asyncRemote.sendText(msg, this); |
224 | 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 | 231 | @Override |
230 | 232 | public void onResult(SendResult result) { |
231 | 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 | 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 | } | ... | ... |