|
|
| const socketProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; |
| const socketUrl = `${socketProtocol}//${window.location.host}`; |
| const socket = new WebSocket(socketUrl); |
|
|
| socket.onmessage = (event) => { |
| term.write(event.data); |
|
|
| } |
|
|
| var term = new window.Terminal({ |
| cursorBlink: true |
| }); |
| term.open(document.getElementById('terminal')); |
|
|
| function init() { |
| if (term._initialized) { |
| return; |
| } |
|
|
| term._initialized = true; |
|
|
| term.prompt = () => { |
| runCommand('\n'); |
| }; |
| setTimeout(() => { |
| term.prompt(); |
| }, 300); |
|
|
| term.onKey(keyObj => { |
| runCommand(keyObj.key); |
| }); |
|
|
| term.attachCustomKeyEventHandler((e) => { |
| if ((e.ctrlKey || e.metaKey) && e.key === 'v') { |
| navigator.clipboard.readText().then(text => { |
| runCommand(text); |
| }); |
| return false; |
| } |
| return true; |
| }); |
| } |
|
|
| function runCommand(command) { |
| socket.send(command); |
|
|
| } |
|
|
| init(); |