function openTerminal(options) { //var CONNECT_TIME = 0; // 请求连接次数 $("#form").hide(); Rows = parseInt(options.Rows); var client = new WSSHClient(); var base64 = new Base64(); var term = new Terminal({cols: 80, rows: Rows, screenKeys: true, useStyle: true}); // 发送客户端数据 term.on('data', function (data) { console.log("xterm data: "); console.log(data); client.sendClientData(data); }); term.open(); $('.terminal').detach().appendTo('#term'); $("#term").show(); term.write("Connecting..."); console.debug(options); //var interTime = setInterval(client_connect, 1000) setTimeout(client_connect, 3000); var intervalId = null; function client_connect() { // var TIMEINIT = 0; // 初始化时间 // var TIMEOUT = 60 * 15; // 超时时间 var CONNECTED = false; // 是否连接成功过 console.log("连接中...."); console.log(options); client.connect({ onError: function (error) { term.write('Error: ' + error + '\r\n'); console.log('error happened'); }, onConnect: function () { console.log('connection established'); // 连接上之后发送初始化数据 client.sendInitData(options); term.focus(); }, onClose: function () { console.log("连接关闭"); term.write("\r\nconnection closed"); if (CONNECTED) { console.log('connection reset by peer'); $('term').hide(); } }, // 当收到服务端返回的数据 onData: function (data) { if (!CONNECTED) { console.log("first connected."); term.write("\r"); //换行 term.focus(); //焦点移动到框上 } /*if(interTime){ clearInterval(interTime); }*/ CONNECTED = true; data = base64.decode(data); /* TIMEINIT = 0;*/ term.write(data); console.log('get data:' + data); } }) } } var charWidth = 6.2; var charHeight = 15.2; /** * for full screen * @returns {{w: number, h: number}} */ function getTerminalSize() { var width = window.innerWidth; var height = window.innerHeight; return { w: Math.floor(width / charWidth), h: Math.floor(height / charHeight) }; } function store(options) { window.localStorage.host = options.host window.localStorage.port = options.port window.localStorage.username = options.username window.localStorage.ispwd = options.ispwd window.localStorage.password = options.password } function check() { return validResult["host"] && validResult["port"] && validResult["username"]; } function connect() { var remember = $("#remember").is(":checked") var options = { host: $("#host").val(), port: $("#port").val(), username: $("#username").val(), password: $("#password").val(), Rows: $("#terminalRow").val(), } if (remember) { store(options) } if (true) { openTerminal(options) } else { for (var key in validResult) { if (!validResult[key]) { alert(errorMsg[key]); break; } } } }