UI: Improve WS publishing of subscription commands.
This commit is contained in:
parent
627c7bd1bc
commit
bd4b0d78c3
@ -47,8 +47,8 @@ public class WebSocketConfiguration implements WebSocketConfigurer {
|
||||
@Bean
|
||||
public ServletServerContainerFactoryBean createWebSocketContainer() {
|
||||
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
|
||||
container.setMaxTextMessageBufferSize(8192);
|
||||
container.setMaxBinaryMessageBufferSize(8192);
|
||||
container.setMaxTextMessageBufferSize(32768);
|
||||
container.setMaxBinaryMessageBufferSize(32768);
|
||||
return container;
|
||||
}
|
||||
|
||||
|
||||
@ -23,6 +23,8 @@ export default angular.module('thingsboard.api.telemetryWebsocket', [thingsboard
|
||||
const RECONNECT_INTERVAL = 2000;
|
||||
const WS_IDLE_TIMEOUT = 90000;
|
||||
|
||||
const MAX_PUBLISH_COMMANDS = 10;
|
||||
|
||||
/*@ngInject*/
|
||||
function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, types, userService) {
|
||||
|
||||
@ -75,19 +77,40 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
|
||||
return service;
|
||||
|
||||
function publishCommands () {
|
||||
if (isOpened && (cmdsWrapper.tsSubCmds.length > 0 ||
|
||||
cmdsWrapper.historyCmds.length > 0 ||
|
||||
cmdsWrapper.attrSubCmds.length > 0)) {
|
||||
dataStream.send(angular.copy(cmdsWrapper)).then(function () {
|
||||
while(isOpened && hasCommands()) {
|
||||
dataStream.send(preparePublishCommands()).then(function () {
|
||||
checkToClose();
|
||||
});
|
||||
cmdsWrapper.tsSubCmds = [];
|
||||
cmdsWrapper.historyCmds = [];
|
||||
cmdsWrapper.attrSubCmds = [];
|
||||
}
|
||||
tryOpenSocket();
|
||||
}
|
||||
|
||||
function hasCommands() {
|
||||
return cmdsWrapper.tsSubCmds.length > 0 ||
|
||||
cmdsWrapper.historyCmds.length > 0 ||
|
||||
cmdsWrapper.attrSubCmds.length > 0;
|
||||
}
|
||||
|
||||
function preparePublishCommands() {
|
||||
var preparedWrapper = {};
|
||||
var leftCount = MAX_PUBLISH_COMMANDS;
|
||||
preparedWrapper.tsSubCmds = popCmds(cmdsWrapper.tsSubCmds, leftCount);
|
||||
leftCount -= preparedWrapper.tsSubCmds.length;
|
||||
preparedWrapper.historyCmds = popCmds(cmdsWrapper.historyCmds, leftCount);
|
||||
leftCount -= preparedWrapper.historyCmds.length;
|
||||
preparedWrapper.attrSubCmds = popCmds(cmdsWrapper.attrSubCmds, leftCount);
|
||||
return preparedWrapper;
|
||||
}
|
||||
|
||||
function popCmds(cmds, leftCount) {
|
||||
var toPublish = Math.min(cmds.length, leftCount);
|
||||
if (toPublish > 0) {
|
||||
return cmds.splice(0, toPublish);
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
function onError (/*message*/) {
|
||||
isOpening = false;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user