Fix disconnect/reconnect issues
Commit 155d78b399
prevented reconnections
from working properly. This fixes that by creating a new RFB object
after disconnecting or failing.
Furthermore, this ensures that a new connection cannot be opened util
we've actually disconnected (either by timer or by receiving a `close`
event).
Closes #452
This commit is contained in:
parent
fe8a4dc9d8
commit
e543525faa
|
@ -482,6 +482,7 @@ var RFB;
|
||||||
Util.Debug("Clearing disconnect timer");
|
Util.Debug("Clearing disconnect timer");
|
||||||
clearTimeout(this._disconnTimer);
|
clearTimeout(this._disconnTimer);
|
||||||
this._disconnTimer = null;
|
this._disconnTimer = null;
|
||||||
|
this._sock.off('close'); // make sure we don't get a double event
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
|
|
@ -110,13 +110,7 @@ var UI;
|
||||||
UI.initSetting('path', 'websockify');
|
UI.initSetting('path', 'websockify');
|
||||||
UI.initSetting('repeaterID', '');
|
UI.initSetting('repeaterID', '');
|
||||||
|
|
||||||
UI.rfb = new RFB({'target': $D('noVNC_canvas'),
|
UI.initRFB();
|
||||||
'onUpdateState': UI.updateState,
|
|
||||||
'onXvpInit': UI.updateXvpVisualState,
|
|
||||||
'onClipboard': UI.clipReceive,
|
|
||||||
'onFBUComplete': UI.FBUComplete,
|
|
||||||
'onFBResize': UI.updateViewDragButton,
|
|
||||||
'onDesktopName': UI.updateDocumentTitle});
|
|
||||||
|
|
||||||
var autoconnect = WebUtil.getQueryVar('autoconnect', false);
|
var autoconnect = WebUtil.getQueryVar('autoconnect', false);
|
||||||
if (autoconnect === 'true' || autoconnect == '1') {
|
if (autoconnect === 'true' || autoconnect == '1') {
|
||||||
|
@ -192,6 +186,16 @@ var UI;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
initRFB: function () {
|
||||||
|
UI.rfb = new RFB({'target': $D('noVNC_canvas'),
|
||||||
|
'onUpdateState': UI.updateState,
|
||||||
|
'onXvpInit': UI.updateXvpVisualState,
|
||||||
|
'onClipboard': UI.clipReceive,
|
||||||
|
'onFBUComplete': UI.FBUComplete,
|
||||||
|
'onFBResize': UI.updateViewDragButton,
|
||||||
|
'onDesktopName': UI.updateDocumentTitle});
|
||||||
|
},
|
||||||
|
|
||||||
addMouseHandlers: function() {
|
addMouseHandlers: function() {
|
||||||
// Setup interface handlers that can't be inline
|
// Setup interface handlers that can't be inline
|
||||||
$D("noVNC_view_drag_button").onclick = UI.setViewDrag;
|
$D("noVNC_view_drag_button").onclick = UI.setViewDrag;
|
||||||
|
@ -602,6 +606,13 @@ var UI;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case 'fatal':
|
||||||
|
case 'failed':
|
||||||
|
case 'disconnected':
|
||||||
|
UI.initRFB();
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof(msg) !== 'undefined') {
|
if (typeof(msg) !== 'undefined') {
|
||||||
$D('noVNC-control-bar').setAttribute("class", klass);
|
$D('noVNC-control-bar').setAttribute("class", klass);
|
||||||
$D('noVNC_status').innerHTML = msg;
|
$D('noVNC_status').innerHTML = msg;
|
||||||
|
@ -654,8 +665,13 @@ var UI;
|
||||||
switch (UI.rfb_state) {
|
switch (UI.rfb_state) {
|
||||||
case 'fatal':
|
case 'fatal':
|
||||||
case 'failed':
|
case 'failed':
|
||||||
case 'loaded':
|
|
||||||
case 'disconnected':
|
case 'disconnected':
|
||||||
|
$D('connectButton').style.display = "";
|
||||||
|
$D('disconnectButton').style.display = "none";
|
||||||
|
UI.connSettingsOpen = false;
|
||||||
|
UI.toggleConnectPanel();
|
||||||
|
break;
|
||||||
|
case 'loaded':
|
||||||
$D('connectButton').style.display = "";
|
$D('connectButton').style.display = "";
|
||||||
$D('disconnectButton').style.display = "none";
|
$D('disconnectButton').style.display = "none";
|
||||||
break;
|
break;
|
||||||
|
@ -736,8 +752,7 @@ var UI;
|
||||||
UI.rfb.set_onFBUComplete(UI.FBUComplete);
|
UI.rfb.set_onFBUComplete(UI.FBUComplete);
|
||||||
|
|
||||||
$D('noVNC_logo').style.display = "block";
|
$D('noVNC_logo').style.display = "block";
|
||||||
UI.connSettingsOpen = false;
|
// Don't display the connection settings until we're actually disconnected
|
||||||
UI.toggleConnectPanel();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
displayBlur: function() {
|
displayBlur: function() {
|
||||||
|
|
Loading…
Reference in New Issue