templates/index.html aktualisiert
This commit is contained in:
@@ -120,13 +120,18 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
let termDataDisposable = null;
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// 1. GridStack Initialisierung
|
// 1. GridStack Initialisierung
|
||||||
var grid = GridStack.init({
|
var grid = GridStack.init({
|
||||||
cellHeight: 80,
|
cellHeight: 80,
|
||||||
margin: 10,
|
margin: 10,
|
||||||
float: true,
|
float: true,
|
||||||
handle: '.widget-header'
|
handle: '.widget-header',
|
||||||
|
|
||||||
|
resizable: {
|
||||||
|
handles: 'all'
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Layout speichern/laden
|
// Layout speichern/laden
|
||||||
@@ -191,12 +196,40 @@
|
|||||||
|
|
||||||
// 5. Node Funktionen
|
// 5. Node Funktionen
|
||||||
window.openTerminal = function(ip) {
|
window.openTerminal = function(ip) {
|
||||||
if(window.termWs) window.termWs.close();
|
|
||||||
|
// alte websocket schließen
|
||||||
|
if (window.termWs) {
|
||||||
|
window.termWs.close();
|
||||||
|
window.termWs = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// alten onData listener entfernen ✅
|
||||||
|
if (termDataDisposable) {
|
||||||
|
termDataDisposable.dispose();
|
||||||
|
termDataDisposable = null;
|
||||||
|
}
|
||||||
|
|
||||||
term.clear();
|
term.clear();
|
||||||
term.write(`\r\n\x1b[34m>>> Verbinde mit ${ip}...\x1b[0m\r\n`);
|
term.write(`\r\n\x1b[34m>>> Verbinde mit ${ip}...\x1b[0m\r\n`);
|
||||||
|
|
||||||
window.termWs = new WebSocket(`ws://${location.host}/ws/terminal/${ip}`);
|
window.termWs = new WebSocket(`ws://${location.host}/ws/terminal/${ip}`);
|
||||||
window.termWs.onmessage = (ev) => term.write(ev.data);
|
|
||||||
term.onData(data => { if(window.termWs) window.termWs.send(data); });
|
window.termWs.onmessage = (ev) => {
|
||||||
|
term.write(ev.data);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.termWs.onclose = () => {
|
||||||
|
term.write("\r\n\x1b[31m[Session beendet]\x1b[0m\r\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
// NEUEN listener registrieren
|
||||||
|
termDataDisposable = term.onData(data => {
|
||||||
|
if (window.termWs &&
|
||||||
|
window.termWs.readyState === WebSocket.OPEN) {
|
||||||
|
window.termWs.send(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
setTimeout(() => window.fitAddon.fit(), 100);
|
setTimeout(() => window.fitAddon.fit(), 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user