Browse Source

Merge branch 'master' of github.com:thingsboard/thingsboard

pull/1271/head
Andrew Shvayka 8 years ago
parent
commit
302cc5985e
  1. 2
      application/src/main/java/org/thingsboard/server/actors/service/DefaultActorService.java
  2. 4
      application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java
  3. 6
      application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetryWebSocketService.java
  4. 28
      ui/src/app/api/telemetry-websocket.service.js
  5. 4
      ui/src/app/common/types.constant.js
  6. 3
      ui/src/app/services/toast.scss

2
application/src/main/java/org/thingsboard/server/actors/service/DefaultActorService.java

@ -99,7 +99,7 @@ public class DefaultActorService implements ActorService {
@PostConstruct @PostConstruct
public void initActorSystem() { public void initActorSystem() {
log.info("Initializing Actor system. {}", actorContext.getRuleChainService()); log.info("Initializing Actor system.");
actorContext.setActorService(this); actorContext.setActorService(this);
system = ActorSystem.create(ACTOR_SYSTEM_NAME, actorContext.getConfig()); system = ActorSystem.create(ACTOR_SYSTEM_NAME, actorContext.getConfig());
actorContext.setActorSystem(system); actorContext.setActorSystem(system);

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) { if (regularUserSessions.size() < maxSessionsPerRegularUser) {
regularUserSessions.add(sessionId); regularUserSessions.add(sessionId);
} else { } 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); , sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), sessionId);
session.close(CloseStatus.POLICY_VIOLATION.withReason("Max regular user sessions limit reached")); session.close(CloseStatus.POLICY_VIOLATION.withReason("Max regular user sessions limit reached"));
return false; return false;
@ -276,7 +276,7 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr
if (publicUserSessions.size() < maxSessionsPerPublicUser) { if (publicUserSessions.size() < maxSessionsPerPublicUser) {
publicUserSessions.add(sessionId); publicUserSessions.add(sessionId);
} else { } 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); , sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), sessionId);
session.close(CloseStatus.POLICY_VIOLATION.withReason("Max public user sessions limit reached")); session.close(CloseStatus.POLICY_VIOLATION.withReason("Max public user sessions limit reached"));
return false; 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) { } else if (customerSessions.size() < maxSubscriptionsPerCustomer) {
customerSessions.add(subId); customerSessions.add(subId);
} else { } 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); , sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max customer subscriptions limit reached")); msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max customer subscriptions limit reached"));
return false; return false;
@ -279,7 +279,7 @@ public class DefaultTelemetryWebSocketService implements TelemetryWebSocketServi
if (regularUserSessions.size() < maxSubscriptionsPerRegularUser) { if (regularUserSessions.size() < maxSubscriptionsPerRegularUser) {
regularUserSessions.add(subId); regularUserSessions.add(subId);
} else { } 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); , sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max regular user subscriptions limit reached")); msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max regular user subscriptions limit reached"));
return false; return false;
@ -292,7 +292,7 @@ public class DefaultTelemetryWebSocketService implements TelemetryWebSocketServi
if (publicUserSessions.size() < maxSubscriptionsPerPublicUser) { if (publicUserSessions.size() < maxSubscriptionsPerPublicUser) {
publicUserSessions.add(subId); publicUserSessions.add(subId);
} else { } 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); , sessionRef.getSecurityCtx().getTenantId(), sessionRef.getSecurityCtx().getId(), subId);
msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max public user subscriptions limit reached")); msgEndpoint.close(sessionRef, CloseStatus.POLICY_VIOLATION.withReason("Max public user subscriptions limit reached"));
return false; return false;

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

@ -26,7 +26,7 @@ const WS_IDLE_TIMEOUT = 90000;
const MAX_PUBLISH_COMMANDS = 10; const MAX_PUBLISH_COMMANDS = 10;
/*@ngInject*/ /*@ngInject*/
function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, types, userService) { function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, $mdUtil, toast, types, userService) {
var isOpening = false, var isOpening = false,
isOpened = false, isOpened = false,
@ -111,7 +111,10 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
} }
} }
function onError (/*message*/) { function onError (errorEvent) {
if (errorEvent) {
showWsError(0, errorEvent);
}
isOpening = false; isOpening = false;
} }
@ -137,7 +140,10 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
} }
} }
function onClose () { function onClose (closeEvent) {
if (closeEvent && closeEvent.code > 1000 && closeEvent.code !== 1006) {
showWsError(closeEvent.code, closeEvent.reason);
}
isOpening = false; isOpening = false;
isOpened = false; isOpened = false;
if (isActive) { if (isActive) {
@ -162,7 +168,9 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
function onMessage (message) { function onMessage (message) {
if (message.data) { if (message.data) {
var data = angular.fromJson(message.data); var data = angular.fromJson(message.data);
if (data.subscriptionId) { if (data.errorCode) {
showWsError(data.errorCode, data.errorMsg);
} else if (data.subscriptionId) {
var subscriber = subscribers[data.subscriptionId]; var subscriber = subscribers[data.subscriptionId];
if (subscriber && data) { if (subscriber && data) {
var keys = fetchKeys(data.subscriptionId); var keys = fetchKeys(data.subscriptionId);
@ -182,6 +190,18 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
checkToClose(); checkToClose();
} }
function showWsError(errorCode, errorMsg) {
var message = 'WebSocket Error: ';
if (errorMsg) {
message += errorMsg;
} else {
message += "error code - " + errorCode + ".";
}
$mdUtil.nextTick(function () {
toast.showError(message);
});
}
function fetchKeys(subscriptionId) { function fetchKeys(subscriptionId) {
var command = commands[subscriptionId]; var command = commands[subscriptionId];
if (command && command.keys && command.keys.length > 0) { if (command && command.keys && command.keys.length > 0) {

4
ui/src/app/common/types.constant.js

@ -23,7 +23,9 @@ export default angular.module('thingsboard.types', [])
permissionDenied: 20, permissionDenied: 20,
invalidArguments: 30, invalidArguments: 30,
badRequestParams: 31, badRequestParams: 31,
itemNotFound: 32 itemNotFound: 32,
tooManyRequests: 33,
tooManyUpdates: 34
}, },
entryPoints: { entryPoints: {
login: "/api/auth/login", login: "/api/auth/login",

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

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

Loading…
Cancel
Save