summaryrefslogtreecommitdiffstats
path: root/webapp/client/websocket_client.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/client/websocket_client.jsx')
-rw-r--r--webapp/client/websocket_client.jsx13
1 files changed, 13 insertions, 0 deletions
diff --git a/webapp/client/websocket_client.jsx b/webapp/client/websocket_client.jsx
index 35be5c3df..1cf97b788 100644
--- a/webapp/client/websocket_client.jsx
+++ b/webapp/client/websocket_client.jsx
@@ -10,11 +10,13 @@ export default class WebSocketClient {
this.conn = null;
this.connectionUrl = null;
this.sequence = 1;
+ this.eventSequence = 0;
this.connectFailCount = 0;
this.eventCallback = null;
this.responseCallbacks = {};
this.firstConnectCallback = null;
this.reconnectCallback = null;
+ this.missedEventCallback = null;
this.errorCallback = null;
this.closeCallback = null;
}
@@ -37,6 +39,8 @@ export default class WebSocketClient {
this.connectionUrl = connectionUrl;
this.conn.onopen = () => {
+ this.eventSequence = 0;
+
if (token) {
this.sendMessage('authentication_challenge', {token});
}
@@ -108,6 +112,11 @@ export default class WebSocketClient {
Reflect.deleteProperty(this.responseCallbacks, msg.seq_reply);
}
} else if (this.eventCallback) {
+ if (msg.seq !== this.eventSequence && this.missedEventCallback) {
+ console.log('missed websocket event, act_seq=' + msg.seq + ' exp_seq=' + this.eventSequence); //eslint-disable-line no-console
+ this.missedEventCallback();
+ }
+ this.eventSequence = msg.seq + 1;
this.eventCallback(msg);
}
};
@@ -125,6 +134,10 @@ export default class WebSocketClient {
this.reconnectCallback = callback;
}
+ setMissedEventCallback(callback) {
+ this.missedEventCallback = callback;
+ }
+
setErrorCallback(callback) {
this.errorCallback = callback;
}