Wer kennt das nicht: man ist unterwegs, keine ssh session möglich. Man will aber unbedingt per top/htop gucken, was auf dem Server los ist. socket.io ftw! Alles, was man dazu braucht sind drei Dateien. Ein installiertes node.js/npm vorausgesetzt. Im Folgendem liegen alle drei Dateien in einem Beliebigen Verzeichnis. Das Beispiel funktioniert natürlich nur lokal. Aber es ist kein langer Weg, um es (abgesichert!) für remote hosts umzubauen. Letzteres ist aber dem Leser überlassen ;)
Abhängigkeiten installieren
Package.json:
1 2 3 4 5 6 7 8 9 10 |
{ "name": "top.js", "version": "0.1.0", "description": "Experimental mini top over websockets", "main": "index.js", "dependencies": { "socket.io": "0.9.10", "socket.io-client": "~0.9.11", } } |
1 |
npm install |
Websocket-Server
Folgender Code informiert alle verbundenden Sockets jede Sekunde über die System-Informationen.
index.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var http = require('http') , server = http.createServer() , socketIO = require('socket.io') , io = socketIO.listen(server) , os = require('os'); server.listen(4001); io .of('/console') .on('connection', function (socket) { var osInfo = function() { socket.emit('os:info', {uptime: os.uptime(), load: os.loadavg(), totalmem: os.totalmem(), freemem: os.freemem(), cpus: os.cpus() }); setTimeout(osInfo, 1000); }; osInfo(); }); |
Websocket-Client
Der Server hat relativ wenig zu tun. Also bleibt die Arbeit mal wieder am Client hängen. Es bedarf aber nur ein wenig jQuery, CSS und JS. Den Beispiel-Client gibt es hier zum Download.