+++ /dev/null
-.xterm.fullscreen {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- width: auto;
- height: auto;
- z-index: 255;
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Fullscreen addon for xterm.js
- *
- * Implements the toggleFullscreen function.
- *
- * If the `fullscreen` argument has been supplied, then
- * if it is true, the fullscreen mode gets turned on,
- * if it is false or null, the fullscreen mode gets turned off.
- *
- * If the `fullscreen` argument has not been supplied, the
- * fullscreen mode is being toggled.
- */
-Terminal.prototype.toggleFullscreen = function (fullscreen) {
- var fn;
-
- if (typeof fullscreen == 'undefined') {
- fn = (this.element.classList.contains('fullscreen')) ? 'remove' : 'add';
- } else if (!fullscreen) {
- fn = 'remove';
- } else {
- fn = 'add';
- }
-
- this.element.classList[fn]('fullscreen');
-}
\ No newline at end of file
--- /dev/null
+/*
+ * Implements the attach method, that
+ * attaches the terminal to a WebSocket stream.
+ *
+ * The bidirectional argument indicates, whether the terminal should
+ * send data to the socket as well and is true, by default.
+ */
+Terminal.prototype.attach = function (socket, bidirectional) {
+ var term = this;
+
+ bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
+ this.socket = socket;
+
+ socket.addEventListener('message', function (ev) {
+ term.write(ev.data);
+ });
+
+ if (bidirectional) {
+ this.on('data', function (data) {
+ socket.send(data);
+ });
+ }
+}
\ No newline at end of file
--- /dev/null
+<!doctype html>
+<html>
+ <head>
+ <link rel="stylesheet" href="../../src/xterm.css" />
+ <link rel="stylesheet" href="../../demo/style.css" />
+ <script src="../../src/xterm.js"></script>
+ <script src="attach.js"></script>
+ </head>
+ <body>
+ <form id="socket-form">
+ <input id="socket-url"
+ type="text"
+ placeholder="Enter socket url (e.g. ws://mysock)"
+ autofocus />
+ <button>
+ Attach
+ </button>
+ </form>
+ <div id="terminal-container"></div>
+ <script>
+ var term = new Terminal(),
+ container = document.getElementById('terminal-container'),
+ socketUrl = document.getElementById('socket-url'),
+ socketForm = document.getElementById('socket-form');
+
+ socketForm.addEventListener('submit', function (ev) {
+ ev.preventDefault();
+ var url = socketUrl.value,
+ sock = new WebSocket(url);
+ sock.addEventListener('open', function () {
+ term.attach(sock);
+ });
+ });
+
+ term.open(container);
+ </script>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+.xterm.fullscreen {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: auto;
+ height: auto;
+ z-index: 255;
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Fullscreen addon for xterm.js
+ *
+ * Implements the toggleFullscreen function.
+ *
+ * If the `fullscreen` argument has been supplied, then
+ * if it is true, the fullscreen mode gets turned on,
+ * if it is false or null, the fullscreen mode gets turned off.
+ *
+ * If the `fullscreen` argument has not been supplied, the
+ * fullscreen mode is being toggled.
+ */
+Terminal.prototype.toggleFullscreen = function (fullscreen) {
+ var fn;
+
+ if (typeof fullscreen == 'undefined') {
+ fn = (this.element.classList.contains('fullscreen')) ? 'remove' : 'add';
+ } else if (!fullscreen) {
+ fn = 'remove';
+ } else {
+ fn = 'add';
+ }
+
+ this.element.classList[fn]('fullscreen');
+}
\ No newline at end of file