通过服务器端脚本使用node-ncurses客户端?

我写了一个小型的node.js netServer聊天应用程序。 我想要为它创build一个ncurses用户界面。 问题是,聊天应用程序是写在服务器端,人们通过netcat连接,所以问题是我将如何去通过它在客户端操纵ncurses?

ncurses是一个C库,你需要链接到它的function,所以我不认为它可以用于你的用例。

我猜测,通过“操纵ncurses”,你真正想要的是改变你写给用户的文本的颜色,在屏幕上下移动等等。

例如,您可以通过让用户通过支持ANSI颜色转义代码的telnet客户端进行连接来获得所需的一些内容。 回答这里生成颜色代码的问题 。

你需要的是一个作为NodeJS模块写的telnet(或ssh)服务器。

它需要了解telnet协议,它比一个简单的字符stream更丰富。 (例如,它发送消息的terminal(重新)大小和许多其他事件)。 http://en.wikipedia.org/wiki/Telnet – 请参阅RFC。

这是令人困惑的,因为telnet客户端通常用于连接只使用普通字符stream的服务。

据我所知,没有这样的工作模块。 请纠正我,如果你find一个。

Netcat不会发送有关terminaltypes,terminal大小或terminal事件的任何信息。 这些对于一个ncursestypes的应用程序来说都是必需的。

您可以编写一个net.server包装您的服务器端节点应用程序,让用户telnet到服务器,将您的应用程序的输出pipe道连接和连接到您的应用程序。

 #!/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