Merge branch 'websocket_rewrite'
This commit is contained in:
@@ -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() {
|
||||
@@ -179,7 +178,65 @@
|
||||
$scope.idxByHostname[instance.hostname] = instance;
|
||||
}
|
||||
|
||||
var socket = io({ path: '/sessions/' + sessionId + '/ws' });
|
||||
var base = '';
|
||||
if (window.location.protocol == 'http:') {
|
||||
base = 'ws://';
|
||||
} else {
|
||||
base = 'wss://';
|
||||
}
|
||||
base += window.location.host;
|
||||
if (window.location.port) {
|
||||
base += ':' + window.location.port;
|
||||
}
|
||||
|
||||
var socket = new ReconnectingWebSocket(base + '/sessions/' + sessionId + '/ws/', null, {reconnectInterval: 1000});
|
||||
socket.listeners = {};
|
||||
|
||||
socket.on = function(name, cb) {
|
||||
if (!socket.listeners[name]) {
|
||||
socket.listeners[name] = [];
|
||||
}
|
||||
socket.listeners[name].push(cb);
|
||||
}
|
||||
|
||||
socket.emit = function() {
|
||||
var name = arguments[0]
|
||||
var args = [];
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
args.push(arguments[i]);
|
||||
}
|
||||
socket.send(JSON.stringify({name: name, args: args}));
|
||||
}
|
||||
|
||||
socket.addEventListener('open', function (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) {
|
||||
$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);
|
||||
var ls = socket.listeners[m.name];
|
||||
if (ls) {
|
||||
for (var i=0; i<ls.length; i++) {
|
||||
var l = ls[i];
|
||||
l.apply(l, m.args);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
socket.on('instance terminal status', function(name, status) {
|
||||
var instance = $scope.idx[name];
|
||||
@@ -245,13 +302,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;
|
||||
|
||||
@@ -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="
|
||||
@@ -294,7 +295,6 @@
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/danialfarid-angular-file-upload/12.2.13/ng-file-upload-all.min.js" integrity="sha256-LrZq3efIkFX0BooX7x/rjWyYDvMKfFV2HJpy6HBw7cE=" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.js"></script>
|
||||
<script src="/assets/app.js"></script>
|
||||
<script src="/assets/xterm.js"></script>
|
||||
<script src="/assets/xterm-addons/fit.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user