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

时间:2011-03-08 03:32:30

标签: node.js ncurses

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

3 个答案:

答案 0 :(得分:1)

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

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

您可以通过支持ANSI颜色转义码的telnet客户端连接用户来实现您想要的一些功能。回答simliar问题以生成颜色代码here

答案 1 :(得分:1)

您需要的是一个telnet(或ssh)服务器,它被编写为NodeJS模块。

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

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

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

Netcat不会发送有关终端类型,终端大小或终端事件的任何信息。这些都是ncurses类型应用程序所必需的。

答案 2 :(得分:0)

您可以编写一个net.server包装您的服务器端node-ncurse应用程序,让用户telnet到服务器,将应用程序的输出传输到连接并将连接通过管道连接到您的应用程序。

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