Terminal / public /script.js
clone3's picture
Init
5ac74dc verified
document.addEventListener('DOMContentLoaded', () => {
const term = new Terminal({
cursorBlink: true,
theme: {
background: '#000000', // Ensure terminal background is black
},
});
const fitAddon = new FitAddon.FitAddon();
term.loadAddon(fitAddon);
term.open(document.getElementById('terminal'));
term.write('Connecting to server...\r\n');
// Connect to WebSocket server
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const ws = new WebSocket(`${protocol}//${window.location.host}/`);
ws.onopen = () => {
console.log('Connected to WebSocket server');
term.write('Connected! Type commands below.\r\n');
fitAddon.fit(); // Fit terminal to container on connection
};
ws.onmessage = (event) => {
term.write(event.data);
};
term.onData((data) => {
ws.send(data);
});
ws.onclose = () => {
console.log('WebSocket connection closed');
term.write('\r\nConnection closed.\r\n');
};
ws.onerror = (error) => {
console.error('WebSocket error:', error);
term.write('\r\nWebSocket error occurred.\r\n');
};
// Resize terminal on window resize
window.addEventListener('resize', () => {
fitAddon.fit();
});
// Initial fit after opening terminal
fitAddon.fit();
});