Ruby on rails,将单个控制台输出流式传输到多个客户端

时间:2017-08-08 14:24:51

标签: ruby-on-rails

我一直在使用actionController :: live和流式传输Linux控制台应用程序到我的webclient。

我正在尝试构建自己的wifi路由器界面来显示wifi信号,下载速度以及使用wpa_supplicant进行一些身份验证等内容

我使用了你在actioncontroller :: live的文档中找到的基本示例,以及在客户端更新div的一些jquery。

从我的控制器我可以做这样的事情来模拟一个wifi信号强度进度条。

Loop do
   Response.stream.write(File.read('/proc/net/wireless'))
End

通过一点点数学可以轻松地以进度条的形式显示wifi实力的实时流...

因此,在运行系统命令之前,这里没有太大问题。

stream.write(`ping googleDOTcom`.each_line{|line| p line+'<br>') }

如果多个Web客户端查看此流,则控制器将启动多个进程...

2个问题我希望讨论选项或解决方案......我怎样才能启动像ping GOOGLE这样的应用程序,并让多个Web客户端查看相同的流。另外,我如何通过仅启动ping GOOGLE

的一个实例来实现此目的

非常感谢您的评论。

1 个答案:

答案 0 :(得分:0)

我建议您将其转换为模型操作,而不是将其作为控制器操作。然后获取结果并尝试将它们作为属性保存在数据库中。

您可以稍微概括一下检查,以允许用户指定要ping的终端主机。然后你应该看看活跃的工作。我计划一个定期间隔作业,它将根据模型ID实例化一个检查并将结果保存到DB。用户只是查看这些计划检查的结果。

它肯定会削减你的服务器所做的工作,并且会阻止某人利用长时间运行的命令来破坏你的服务。