将 "real-time" 控制台输出发送到客户端浏览器的技术

Technology to send "real-time" console output to the client's browser

我有一个 .NET 控制台应用程序,我想在 ASP.NET MVC 应用程序的服务器上启动它。它在一段时间内连续产生输出,我想拦截这个输出并在他的浏览器中显示给客户端window。

从另一个控制台应用程序,我可以这样做:

public static void Main(string[] args)
{
  Process process = new Process();
  process.StartInfo.FileName = "RandomOutputCreator.exe";
  process.StartInfo.UseShellExecute = false;
  process.StartInfo.RedirectStandardOutput = true;
  process.OutputDataReceived += (sender, e) =>
  {
    Console.WriteLine(e.Data);
  };

  process.Start();
  process.BeginOutputReadLine();

  Console.ReadKey();
}

问题是在MVC应用程序中,我无法将读取的数据推送到客户端,而是依赖对控制器的请求来获取我的数据。 WebSockets 之类的东西可能会在这里帮助我,但我对这种事情很陌生,想知道是否有 "built-in" 方法来完成这个。

然后是网络 API。这也许有用吗,因为它似乎与 MVC 配合得很好?

(由于我不知道什么是合适的技术,请原谅缺少标签,请随意填写一些您认为合适的)。

您可以在单独的框架中尝试 "print" 控制台输出(请参阅 iframe HTML 标记)。 您应该将其中一项操作设置为框架的来源 (URL)。您需要将 IIS 配置为 运行 此操作没有执行时间限制。

接下来,您的操作应该 运行 一个外部程序,拦截其输出,并将其写入 HTTP 输出(参见 ContentResult)。

这个主题通常让我想起为了允许从我的浏览器到 ASP.NET 应用程序的实时通信而遵循的教程。

总结:您正在寻找的确实是 WebSocket,并且没有标准的内置函数来处理它。但是,为了帮助你做一些事情,你仍然有图书馆 signalR!

这里是 link 参考教程:http://www.asp.net/signalr/overview/getting-started/real-time-web-applications-with-signalr

我有一个小项目可以做到这一点:https://github.com/vtortola/WebSocketListener/wiki/WebSocketListener-Terminal-Server

看看它,它可能会给你一些想法。