Retry client connection when websocket is disconnected.

Close websocket server reference when client has disconnected.
This commit is contained in:
Jonathan Leibiusky (@xetorthio)
2017-10-20 15:26:34 +02:00
parent b1406f4ea8
commit fbce7ce63a
3 changed files with 30 additions and 13 deletions

View File

@@ -27,7 +27,7 @@
$scope.selectedInstance = null;
$scope.isAlive = true;
$scope.ttl = '--:--:--';
$scope.connected = true;
$scope.connected = false;
$scope.type = {windows: false};
$scope.isInstanceBeingCreated = false;
$scope.newInstanceBtnText = '+ Add new instance';
@@ -35,7 +35,6 @@
$scope.isInstanceBeingDeleted = false;
$scope.uploadProgress = 0;
$scope.uploadFiles = function (files, invalidFiles) {
let total = files.length;
let uploadFile = function() {
@@ -190,7 +189,7 @@
base += ':' + window.location.port;
}
var socket = new WebSocket(base + '/sessions/' + sessionId + '/ws/');
var socket = new ReconnectingWebSocket(base + '/sessions/' + sessionId + '/ws/', null, {reconnectInterval: 1000});
socket.listeners = {};
socket.on = function(name, cb) {
@@ -210,10 +209,22 @@
}
socket.addEventListener('open', function (event) {
console.log('open', event);
$scope.connected = true;
for (var i in $scope.instances) {
var instance = $scope.instances[i];
if (instance.term) {
instance.term.setOption('disableStdin', false);
}
}
});
socket.addEventListener('close', function (event) {
console.log('close', event);
$scope.connected = false;
for (var i in $scope.instances) {
var instance = $scope.instances[i];
if (instance.term) {
instance.term.setOption('disableStdin', true);
}
}
});
socket.addEventListener('message', function (event) {
var m = JSON.parse(event.data);
@@ -290,13 +301,6 @@
});
});
socket.on('connect_error', function() {
$scope.connected = false;
});
socket.on('connect', function() {
$scope.connected = true;
});
socket.on('instance stats', function(stats) {
$scope.idx[stats.instance].mem = stats.mem;
$scope.idx[stats.instance].cpu = stats.cpu;

View File

@@ -280,6 +280,7 @@
</md-dialog-actions>
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reconnecting-websocket/1.0.0/reconnecting-websocket.min.js" integrity="sha256-A4JwlcDvqO4JXpvEtvWY1RH8JAEMu5W21wP8GUXLUNs=" crossorigin="anonymous"></script>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="