Включение цветов в Term.js
Я использую term.js
для эмуляции терминала в веб-браузере через Javascript и Node.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
});
1 ответ
Цвет работает для меня. Вот моя тестовая установка на 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
в вашем браузере. Вы должны увидеть что-то вроде этого.