terminado.js
40 lines
| 1.3 KiB
| application/javascript
|
JavascriptLexer
Thomas Kluyver
|
r18481 | define ([], function() { | ||
Matthias Bussonnier
|
r19739 | "use strict"; | ||
Thomas Kluyver
|
r18481 | function make_terminal(element, size, ws_url) { | ||
var ws = new WebSocket(ws_url); | ||||
var term = new Terminal({ | ||||
cols: size.cols, | ||||
rows: size.rows, | ||||
screenKeys: true, | ||||
Bussonnier Matthias
|
r18489 | useStyle: false | ||
Thomas Kluyver
|
r18481 | }); | ||
ws.onopen = function(event) { | ||||
ws.send(JSON.stringify(["set_size", size.rows, size.cols, | ||||
window.innerHeight, window.innerWidth])); | ||||
term.on('data', function(data) { | ||||
ws.send(JSON.stringify(['stdin', data])); | ||||
}); | ||||
term.on('title', function(title) { | ||||
document.title = title; | ||||
}); | ||||
term.open(element); | ||||
ws.onmessage = function(event) { | ||||
Matthias Bussonnier
|
r19739 | var json_msg = JSON.parse(event.data); | ||
Thomas Kluyver
|
r18481 | switch(json_msg[0]) { | ||
case "stdout": | ||||
term.write(json_msg[1]); | ||||
break; | ||||
case "disconnect": | ||||
term.write("\r\n\r\n[CLOSED]\r\n"); | ||||
break; | ||||
} | ||||
}; | ||||
}; | ||||
return {socket: ws, term: term}; | ||||
} | ||||
return {make_terminal: make_terminal}; | ||||
}); | ||||