41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
const socket = io('https://hsamooc.cn/vsc-like',{path:'/vsc-like-ws'});
|
|
let term;
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// 创建一个新的 xterm 实例
|
|
term = new Terminal({
|
|
cursorBlink: true,
|
|
cols: 80,
|
|
rows: 24,
|
|
});
|
|
|
|
// 打开终端到 #terminal 元素
|
|
term.open(document.getElementById('terminal'));
|
|
|
|
// 启动连接并监听数据
|
|
socket.on('connected', function (data) {
|
|
term.write('Terminal connected\n');
|
|
});
|
|
|
|
// 监听后端返回的终端输出并显示
|
|
socket.on('terminal_output', function (data) {
|
|
term.write(data.data); // 输出来自后端的数据
|
|
});
|
|
|
|
// 监听用户在终端中输入的命令
|
|
term.onData(function (data) {
|
|
socket.emit('send_input', { input: data }); // 将用户输入通过 WebSocket 发送给后端
|
|
});
|
|
|
|
// 用户输入命令时,将其发送给后端
|
|
socket.emit('send_input', { input: 'start' });
|
|
|
|
// 如果终端被断开,显示消息
|
|
socket.on('error', function (error) {
|
|
term.write(`\nError: ${error.message}`);
|
|
});
|
|
|
|
socket.on('disconnect', function () {
|
|
term.write('\nDisconnected from terminal');
|
|
});
|
|
}); |