2011-03-08 6 views
6

Ho scritto una piccola applicazione di chat netServer node.js. Voglio lavorare sulla creazione di un'interfaccia utente ncurses per questo. Il problema è che l'applicazione di chat è scritta sul lato server e le persone si connettono tramite netcat, quindi la domanda è come farei a manipolare ncurses sul lato client attraverso di esso?Utilizzo del nodo-ncurses sul lato client tramite script sul lato server?

+0

Hai visto node-ncurses? Non sono sicuro se funzionerà tramite netcat. https://github.com/mscdex/node-ncurses –

risposta

1

ncurses è una libreria C a cui è necessario collegarsi per chiamarla funzioni, quindi non penso che sia ciò che è possibile utilizzare per il proprio caso d'uso.

Sto indovinando che da "ncurses manipolando" che cosa sei veramente dopo è un modo per cambiare il colore del testo che si sta scrivendo agli utenti, in movimento su e giù per lo schermo, ecc

È forse in grado di ottenere un po 'di ciò che si desidera connettendo gli utenti tramite un client telnet che supporti i codici ANSI di escape del colore, ad esempio. Rispondere alla domanda simliar per la produzione di codici colore here.

1

Quello che ti serve è un server telnet (o ssh) scritto come modulo NodeJS.

Ha bisogno di capire il protocollo telnet, che è più ricco di un semplice flusso di caratteri. (ad esempio invia messaggi per le dimensioni (ri) del terminale e molti altri eventi). http://en.wikipedia.org/wiki/Telnet - vedere gli RFC.

Ciò è fonte di confusione poiché il client telnet viene spesso utilizzato per connettersi a servizi che utilizzano solo flussi di caratteri semplici.

Per quanto ho trovato, non esistono tali moduli di lavoro. Per favore correggimi se ne trovi uno.

Netcat non invia alcuna informazione sul tipo di terminale, dimensioni del terminale o eventi del terminale. Sono tutti necessari per un'applicazione di tipo ncurses.

0

È possibile scrivere un net.server avvolge l'applicazione node-ncurse lato server, consentire agli utenti di telnet al server, inviare l'output della propria app alla connessione e collegare la connessione all'app.

#!/usr/bin/env node 


/** 
* widget.js is in node-ncurses's examples 
*/ 
var net = require('net'), 
    child = require('child_process'), 
    bin = child.spawn('./widget.js', ['InputBox']); 

var server = net.createServer(function(c) { 

    console.log('server connected'); 
    c.on('end', function() { 
     console.log('server disconnected'); 
    }); 

    c.pipe(bin.stdin); 
    bin.stdout.pipe(c); 

}).listen(8124, function() { 
    console.log('server bound 8124'); 
}); 

// and let users: 
// $ telnet localhost 8124