const POLLING_DELAY = 2000;
const ENABLE_WEBSOCKETS = true;
const ENABLE_EVENT_SOURCE = true;
+ const MAX_WEBSOCKET_ERRORS = 2;
const _ = (window.libD && libD.l10n) ? libD.l10n() : function (s) {return s;};
}
let blacklistWebsockets = false;
+ let webSocketErrors = 0;
function bindConnectionEvents(connection) {
connection.onopen = connectionReady;
connection.onmessage = function (e) {
+ if (connection === webSocket) {
+ webSocketErrors = 0;
+ }
+
connectionReady();
parseAndHandleReceivedData(e.data);
};
connection.onerror = function (e) {
console.error("Connection error:", e);
+
if (connection === eventSource) {
retryPolling();
+ } else {
+ webSocketErrors++;
+
+ if (webSocketErrors > MAX_WEBSOCKET_ERRORS) {
+ blacklistWebsockets = true;
+ }
}
};