[Fix] Fixed re-registering for updates on new WS connection

This commit is contained in:
Robert von Burg 2020-02-26 21:17:51 +01:00
parent ee290b468b
commit 6decabfdb4
2 changed files with 22 additions and 2 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "strolch-wc-ws-observer", "name": "strolch-wc-ws-observer",
"description": "Strolch Polymer WebSocket observer update handler extension", "description": "Strolch Polymer WebSocket observer update handler extension",
"version": "0.2.1", "version": "0.2.2",
"authors": [ "authors": [
"Robert von Burg" "Robert von Burg"
], ],

View File

@ -13,6 +13,7 @@
var webSocket = null; var webSocket = null;
var observers = {}; var observers = {};
var registrations = {};
Polymer({ Polymer({
is: 'strolch-wc-ws-observer', is: 'strolch-wc-ws-observer',
@ -71,8 +72,26 @@
console.log("Unregistered callback for " + objectType + " " + type + " " + source); console.log("Unregistered callback for " + objectType + " " + type + " " + source);
}, },
_reRegister: function () {
var objectTypes = Object.keys(observers);
console.log("Reregistering " + objectTypes.length + " object types...");
for (var i = 0; i < objectTypes.length; i++) {
var objectType = objectTypes[i];
var byType = observers[objectTypes[i]];
var types = Object.keys(byType);
console.log("Reregistering " + types.length + " types...");
for (var j = 0; j < types.length; j++) {
var type = types[i];
var params = registrations[objectType + "_" + type];
this._register(objectType, type, params);
}
}
},
_register: function (objectType, type, params) { _register: function (objectType, type, params) {
console.log("Registering for updates for " + objectType + " " + type); console.log("Registering for updates for " + objectType + " " + type);
registrations[objectType + "_" + type] = params;
this._sendWsMessage({ this._sendWsMessage({
msgType: "ObserverRegister", msgType: "ObserverRegister",
objectType: objectType, objectType: objectType,
@ -158,7 +177,8 @@
if (msg.msgType == "ObserverAdd" || msg.msgType == "ObserverUpdate" || msg.msgType == "ObserverRemove") { if (msg.msgType == "ObserverAdd" || msg.msgType == "ObserverUpdate" || msg.msgType == "ObserverRemove") {
this.notifyObservers(msg); this.notifyObservers(msg);
} else if (msg.msgType == "Authenticate") { } else if (msg.msgType == "Authenticate") {
console.log("Successfully authenticated!"); console.log("Successfully authenticated, re-registering...");
this._reRegister();
} else { } else {
console.error("Unhandled event " + msg.msgType); console.error("Unhandled event " + msg.msgType);
} }