Merge pull request #1064 from jitsi/5xx_reloads

Page reloads on BOSH HTTP errors
This commit is contained in:
George Politis 2016-10-26 11:39:44 -05:00 committed by GitHub
commit 68b587b110
2 changed files with 27 additions and 1 deletions

View File

@ -18,6 +18,7 @@ import {reportError} from './modules/util/helpers';
import UIUtil from './modules/UI/util/UIUtil';
const ConnectionEvents = JitsiMeetJS.events.connection;
const ConnectionErrors = JitsiMeetJS.errors.connection;
const ConferenceEvents = JitsiMeetJS.events.conference;
@ -511,6 +512,7 @@ export default {
}).then(([tracks, con]) => {
console.log('initialized with %s local tracks', tracks.length);
APP.connection = connection = con;
this._bindConnectionFailedHandler(con);
this._createRoom(tracks);
this.isDesktopSharingEnabled =
JitsiMeetJS.isDesktopSharingEnabled();
@ -547,6 +549,28 @@ export default {
isLocalId (id) {
return this.getMyUserId() === id;
},
/**
* Binds a handler that will handle the case when the connection is dropped
* in the middle of the conference.
* @param {JitsiConnection} connection the connection to which the handler
* will be bound to.
* @private
*/
_bindConnectionFailedHandler (connection) {
const handler = function (error, errMsg) {
if (ConnectionErrors.OTHER_ERROR === error) {
// - item-not-found
// - connection dropped(closed by Strophe unexpectedly
// possible due too many transport errors)
console.error("XMPP connection error: " + errMsg);
APP.UI.showPageReloadOverlay();
connection.removeEventListener(
ConnectionEvents.CONNECTION_FAILED, handler);
}
};
connection.addEventListener(
ConnectionEvents.CONNECTION_FAILED, handler);
},
/**
* Simulates toolbar button click for audio mute. Used by shortcuts and API.
* @param mute true for mute and false for unmute.

View File

@ -21,6 +21,7 @@ import SettingsMenu from "./side_pannels/settings/SettingsMenu";
import Profile from "./side_pannels/profile/Profile";
import Settings from "./../settings/Settings";
import RingOverlay from "./ring_overlay/RingOverlay";
import RandomUtil from "../util/RandomUtil";
import UIErrors from './UIErrors';
var EventEmitter = require("events");
@ -1088,7 +1089,8 @@ UI.notifyFocusDisconnected = function (focus, retrySec) {
* the page should be reloaded.
*/
UI.showPageReloadOverlay = function () {
PageReloadOverlay.show(15 /* will reload in 15 seconds */);
// Reload the page after 10 - 30 seconds
PageReloadOverlay.show(10 + RandomUtil.randomInt(0, 20));
};
/**