以tty格式在websocket上传递进程输出

时间:2015-11-11 09:06:34

标签: websocket subprocess tty

这是关于一般架构的问题,我不要求任何人为我解决这个小黑客,虽然如果有人这样做我也不会生气;)。

假设我有一个Web应用程序,它产生标准的unix进程(如Travis CI)。虽然选择这样一个过程的标准似乎很简单,但我宁愿让整个过程异步(比如Travis)。所以我想通过websocket传递整个输出并进入一些基于Web的终端模拟器。

但是,我能找到的唯一仿真器是完全交互式的(即它们允许用户输入,因此具有一些自定义服务器端组件)。我的目标是拥有一个客户端代码,并将输出填入其中。

那么有必要创建一个websocket,将它附加到服务器端进程的stdout(最好是模拟颜色和花式的tty)并显示终端客户端?我认为有一些控制代码来区分tty和文本文件,这些控制代码需要以某种方式在websocket上编码,但是有没有关于这个的文档呢?

2 个答案:

答案 0 :(得分:0)

我已经为.NET应用程序做了这个。我认为这可能对你有所帮助。

我有一个名为NLog.Contrib.Targets.WebSocketServer的小型.NET项目,它是一个使用WebSocket和AngularJS的日志监视器。基本上,它广播通过WebSocket记录的数据,并且有一个显示数据的AngularJS指令。如何突出显示数据更像是一种演示文稿,因此它取决于您使用的框架。基本上,这个组件附加到使用NLog作为日志记录框架的任何.NET应用程序,因此您可以尝试在Travis中找到一些可扩展性点并将其附加到那里。

关于附加到stdout,我在.NET中也有关于web interactive CMD.exe的概念证明,尽管你可以忽略stdin部分。如果您使用Mono,可能与Windows中的内容相同。

我认为这与您正在寻找的非常相似。如果您有更具体的问题,请告诉我。

答案 1 :(得分:0)

您可以使用STDWebsocket来实现此目的。例如,只需阅读index.html脚本标记即可。它应该解决你的问题(或任何经历过这个问题的人)

相关问题