2014-09-30 4 views
1

Я использую term.js для эмуляции терминала в веб-браузере с помощью Javascript & Node.js.Включение Цвета в Term.js

Я уже настроил основная реализация & может подключаться как к локальному, так и удаленному хосту (я использую узел ssh2 для подключения к удаленному хосту) & все работает отлично, как и ожидались.
Но все черное & белый (черный фон, белый текст).

У меня есть следующий код на клиенте, который соответствует примеру в репозитории. Должен ли я добавить дополнительную конфигурацию для включения цветов?

 var term = new Terminal({ 
     colors: Terminal.colors, //This alone doesnt seem to work 
     cols: 80, 
     rows: 24, 
     useStyle: true, 
     screenKeys: true, 
     cursorBlink: true 
     }); 

ответ

5

Цветные работы для меня. Вот мой тест установки на Ubuntu:

Установка зависимостей первого: npm install express socket.io ssh2 term.js

Установите colortest пакет на удаленном сервере (что вы ssh'ing в): sudo apt-get install colortest -y

server.js:

var express = require('express'); 
var app = express(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

var term = require('term.js'); 
var ssh = require('ssh2'); 

server.listen(8000); 

app.use(express.static(__dirname + '/public')); 
app.use(term.middleware()); 

io.on('connection', function (socket) { 
    var conn = new ssh(); 
    conn.on('ready', function() { 
    socket.emit('data', '\n*** SSH CONNECTION ESTABLISHED ***\n'); 
    conn.exec('env TERM=xterm-256color colortest-256', function(err, stream) { 
     if (err) 
     return socket.emit('data', '\n*** SSH EXEC ERROR: ' + err.message + ' ***\n'); 
     stream.on('data', function(d) { 
     socket.emit('data', d.toString('binary')); 
     }).on('close', function() { 
     conn.end(); 
     }); 
    }); 
    }).on('close', function() { 
    socket.emit('data', '\n*** SSH CONNECTION CLOSED ***\n'); 
    }).connect({ 
    host: '192.168.100.105', 
    port: 22, 
    username: 'foo', 
    password: 'barbaz', 
    }); 
}); 

общественности/client.htm:

<html> 
    <head> 
    <title>WebTerm</title> 
    <script src="/socket.io/socket.io.js"></script> 
    <script src="/term.js"></script> 
    <script> 
     window.addEventListener('load', function() { 
     var socket = io.connect(); 
     socket.on('connect', function() { 
      var term = new Terminal({ 
      cols: 250, 
      rows: 100, 
      convertEol: true, 
      useStyle: true, 
      cursorBlink: true, 
      screenKeys: true 
      }); 

      term.on('data', function(data) { 
      socket.emit('data', data); 
      }); 

      term.on('title', function(title) { 
      document.title = title; 
      }); 

      term.open(document.body); 

      socket.on('data', function(data) { 
      term.write(data); 
      }); 

      socket.on('disconnect', function() { 
      term.destroy(); 
      }); 
     }); 
     }, false); 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 

Выполнение node server.js, а затем посещение http://localhost:8000/client.htm в вашем браузере. Вы должны увидеть что-то вроде this.

+0

Спасибо, пробовал, что и это сработало для меня –