terminado.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. define (["xterm", "xtermjs-fit"], function(Terminal, fit) {
  2. "use strict";
  3. function make_terminal(element, ws_url) {
  4. var ws = new WebSocket(ws_url);
  5. Terminal.applyAddon(fit);
  6. var term = new Terminal();
  7. ws.onopen = function(event) {
  8. term.on('data', function(data) {
  9. ws.send(JSON.stringify(['stdin', data]));
  10. });
  11. term.on('title', function(title) {
  12. document.title = title;
  13. });
  14. term.open(element);
  15. term.fit();
  16. // send the terminal size to the server.
  17. ws.send(JSON.stringify(["set_size", term.rows, term.cols,
  18. window.innerHeight, window.innerWidth]));
  19. ws.onmessage = function(event) {
  20. var json_msg = JSON.parse(event.data);
  21. switch(json_msg[0]) {
  22. case "stdout":
  23. term.write(json_msg[1]);
  24. break;
  25. case "disconnect":
  26. term.write("\r\n\r\n[CLOSED]\r\n");
  27. break;
  28. }
  29. };
  30. };
  31. return {socket: ws, term: term};
  32. }
  33. return {make_terminal: make_terminal};
  34. });