| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- let isFirstMessage = true;
- let user = '';
- let socket = null;
- $(function()
- {
- $.getLib([config.webRoot + 'js/xterm/xterm.js', config.webRoot + 'js/xterm/addon-fit.js'], {root: false}, function()
- {
- const rows = Math.floor((window.innerHeight - 5) / 17);
- terminal = new Terminal({cursorBlink: false, rows: rows});
- terminal.open(document.getElementById('terminal'));
- const fitAddon = new FitAddon.FitAddon();
- terminal.loadAddon(fitAddon);
- fitAddon.fit()
- terminal.focus();
- initWebsocket();
- terminal.onResize(e => {
- sendWebsocketMessage({"type": "resize", "rows": e.rows, "cols": e.cols});
- });
- terminal.onData(e => {
- sendWebsocketMessage({"type": "input", "input": e});
- });
- terminal.paste = function (text) {
- sendWebsocketMessage({"type": "input", "input": text});
- };
- });
- })
- function sendWebsocketMessage(data) {
- if (socket && socket.readyState === 1)
- {
- socket.send(JSON.stringify(data));
- }
- if (socket && socket.status === 403)
- {
- console.error('您没有权限');
- return false;
- }
- }
- function initWebsocket() {
- const rows = Math.floor((window.innerHeight - 5) / 17);
- const cols = Math.floor((window.innerWidth - 5) / 9);
- const url = webSocketURL + `&rows=${rows}&columns=${cols}`;
- socket = new WebSocket(url);
- socket.onclose = e => {
- let connectionError = instanceLang.errors.connectClosed;
- if(e.reason && instanceLang.errors.connectErrors[e.reason]) connectionError = instanceLang.errors.connectErrors[e.reason];
- zui.Modal.confirm({message: connectionError, icon:'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'}).then((res) =>
- {
- if(res)
- {
- window.location.reload();
- }
- else
- {
- window.close();
- }
- });
- };
- socket.onerror = () => {
- zui.Modal.alert({message: instanceLang.errors.connectFailed, icon:'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'}).then(function(){window.close();});
- };
- socket.addEventListener('message', function (event) {
- const response = atob(event.data);
- terminal.write(decodeURIComponent(escape(response)));
- });
- }
|