You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.js 3.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. function openTerminal(options) {
  2. //var CONNECT_TIME = 0; // 请求连接次数
  3. Rows = parseInt(options.Rows);
  4. var client = new WSSHClient();
  5. var base64 = new Base64();
  6. var term = new Terminal({cols: 80, rows: Rows, screenKeys: true, useStyle: true});
  7. // 发送客户端数据
  8. term.on('data', function (data) {
  9. console.log("xterm data: ");
  10. console.log(data);
  11. client.sendClientData(data);
  12. });
  13. term.open();
  14. $('.terminal').detach().appendTo('#term');
  15. $("#term").show();
  16. term.write("Connecting...");
  17. console.debug(options);
  18. //var interTime = setInterval(client_connect, 1000)
  19. setTimeout(client_connect, 3000);
  20. var intervalId = null;
  21. function client_connect() {
  22. // var TIMEINIT = 0; // 初始化时间
  23. // var TIMEOUT = 60 * 15; // 超时时间
  24. var CONNECTED = false; // 是否连接成功过
  25. console.log("连接中....");
  26. console.log(options);
  27. client.connect({
  28. onError: function (error) {
  29. term.write('Error: ' + error + '\r\n');
  30. console.log('error happened');
  31. },
  32. onConnect: function () {
  33. console.log('connection established');
  34. // 连接上之后发送初始化数据
  35. client.sendInitData(options);
  36. term.focus();
  37. },
  38. onClose: function () {
  39. console.log("连接关闭");
  40. term.write("\r\nconnection closed");
  41. if (CONNECTED) {
  42. console.log('connection reset by peer');
  43. $('term').hide();
  44. }
  45. },
  46. // 当收到服务端返回的数据
  47. onData: function (data) {
  48. if (!CONNECTED) {
  49. console.log("first connected.");
  50. term.write("\r"); //换行
  51. term.focus(); //焦点移动到框上
  52. }
  53. /*if(interTime){
  54. clearInterval(interTime);
  55. }*/
  56. CONNECTED = true;
  57. data = base64.decode(data);
  58. /* TIMEINIT = 0;*/
  59. term.write(data);
  60. console.log('get data:' + data);
  61. }
  62. })
  63. }
  64. }
  65. var charWidth = 6.2;
  66. var charHeight = 15.2;
  67. /**
  68. * for full screen
  69. * @returns {{w: number, h: number}}
  70. */
  71. function getTerminalSize() {
  72. var width = window.innerWidth;
  73. var height = window.innerHeight;
  74. return {
  75. w: Math.floor(width / charWidth),
  76. h: Math.floor(height / charHeight)
  77. };
  78. }
  79. function store(options) {
  80. window.localStorage.host = options.host
  81. window.localStorage.port = options.port
  82. window.localStorage.username = options.username
  83. window.localStorage.ispwd = options.ispwd
  84. window.localStorage.password = options.password
  85. }
  86. function check() {
  87. return validResult["host"] && validResult["port"] && validResult["username"];
  88. }
  89. function connect() {
  90. var remember = $("#remember").is(":checked")
  91. var options = {
  92. host: $("#host").val(),
  93. port: $("#port").val(),
  94. username: $("#username").val(),
  95. password: $("#password").val(),
  96. Rows: $("#terminalRow").val(),
  97. }
  98. if (remember) {
  99. store(options)
  100. }
  101. if (true) {
  102. openTerminal(options)
  103. } else {
  104. for (var key in validResult) {
  105. if (!validResult[key]) {
  106. alert(errorMsg[key]);
  107. break;
  108. }
  109. }
  110. }
  111. }

No Description

Contributors (1)