Browse Source

Improve WS errors handling.

pull/1249/head
Igor Kulikov 8 years ago
parent
commit
0b664e9d93
  1. 4
      application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java
  2. 6
      application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetryWebSocketService.java
  3. 16
      ui/src/app/api/telemetry-websocket.service.js
  4. 3
      ui/src/app/services/toast.scss

4
application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java

@ -263,7 +263,7 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr
if (regularUserSessions.size() < maxSessionsPerRegularUser) {
regularUserSessions.add(sessionId);
} else {
log.info("[{}][{}][{}] Failed to start session. Max user sessions limit reached"
log.info("[{}][{}][{}] Failed to start session. Max regular user sessions limit reached"
, sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), sessionId);
session.close(CloseStatus.POLICY_VIOLATION.withReason("Max regular user sessions limit reached"));
return false;
@ -276,7 +276,7 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr
if (publicUserSessions.size() < maxSessionsPerPublicUser) {
publicUserSessions.add(sessionId);
} else {
log.info("[{}][{}][{}] Failed to start session. Max user sessions limit reached"
log.info("[{}][{}][{}] Failed to start session. Max public user sessions limit reached"
, sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), sessionId);
session.close(CloseStatus.POLICY_VIOLATION.withReason("Max public user sessions limit reached"));
return false;

6
application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetryWebSocketService.java

@ -266,7 +266,7 @@ public class DefaultTelemetryWebSocketService implements TelemetryWebSocketServi
} else if (customerSessions.size() < maxSubscriptionsPerCustomer) {
customerSessions.add(subId);
} else {
log.info("[{}][{}][{}] Failed to start subscription. Max customer sessions limit reached"
log.info("[{}][{}][{}] Failed to start subscription. Max customer subscriptions limit reached"
, sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max customer subscriptions limit reached"));
return false;
@ -279,7 +279,7 @@ public class DefaultTelemetryWebSocketService implements TelemetryWebSocketServi
if (regularUserSessions.size() < maxSubscriptionsPerRegularUser) {
regularUserSessions.add(subId);
} else {
log.info("[{}][{}][{}] Failed to start subscription. Max user sessions limit reached"
log.info("[{}][{}][{}] Failed to start subscription. Max regular user subscriptions limit reached"
, sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max regular user subscriptions limit reached"));
return false;
@ -292,7 +292,7 @@ public class DefaultTelemetryWebSocketService implements TelemetryWebSocketServi
if (publicUserSessions.size() < maxSubscriptionsPerPublicUser) {
publicUserSessions.add(subId);
} else {
log.info("[{}][{}][{}] Failed to start subscription. Max user sessions limit reached"
log.info("[{}][{}][{}] Failed to start subscription. Max public user subscriptions limit reached"
, sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max public user subscriptions limit reached"));
return false;

16
ui/src/app/api/telemetry-websocket.service.js

@ -26,7 +26,7 @@ const WS_IDLE_TIMEOUT = 90000;
const MAX_PUBLISH_COMMANDS = 10;
/*@ngInject*/
function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, toast, types, userService) {
function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, $mdUtil, toast, types, userService) {
var isOpening = false,
isOpened = false,
@ -111,7 +111,10 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, to
}
}
function onError (/*message*/) {
function onError (errorEvent) {
if (errorEvent) {
showWsError(0, errorEvent);
}
isOpening = false;
}
@ -137,7 +140,10 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, to
}
}
function onClose () {
function onClose (closeEvent) {
if (closeEvent && closeEvent.code > 1000) {
showWsError(closeEvent.code, closeEvent.reason);
}
isOpening = false;
isOpened = false;
if (isActive) {
@ -191,7 +197,9 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, to
} else {
message += "error code - " + errorCode + ".";
}
toast.showError(message);
$mdUtil.nextTick(function () {
toast.showError(message);
});
}
function fetchKeys(subscriptionId) {

3
ui/src/app/services/toast.scss

@ -16,18 +16,21 @@
md-toast.tb-info-toast .md-toast-content {
height: 100%;
max-height: 100%;
padding: 18px;
font-size: 18px;
}
md-toast.tb-success-toast .md-toast-content {
height: 100%;
max-height: 100%;
font-size: 18px !important;
background-color: #008000;
}
md-toast.tb-error-toast .md-toast-content {
height: 100%;
max-height: 100%;
font-size: 18px !important;
background-color: #800000;
}

Loading…
Cancel
Save