ruby - 使用 Ruby 将文件流式传输到浏览器

标签 ruby file logging browser gem

我正在尝试寻找一种有效的方式来查看网页上的服务器日志。我不介意 build 一颗 gem ;我只想找出最好的方法。

有没有办法通过 Ruby(不是任何框架)和浏览器保持对文件的流打开?还是必须通过每 x 秒轮询一次文件来完成?

最佳答案

这是一个常见的问题。您不能真正“轻松”地流式传输到浏览器。最后,您必须在客户端有一些小的 javascript 位来处理和显示传入的数据,并在服务器端有一个单独的服务器进程来读取文件并将数据泵回客户端。

如今大多数浏览器都支持 WebSockets,它允许浏览器客户端和服务器端的任何服务之间进行双向直接通信。这就是我要使用的。

在 WebSockets 出现之前,您会遇到各种使用 AJAX 长轮询或其他变通方法的黑客攻击。但今天我要说的是 WebSockets。

有几个用于 ruby​​ 的 WebSocket 库,这使得在服务器端和客户端上设置这样的东西变得更容易:

Best Ruby on Rails WebSocket tool
Google - Ruby Websockets

另外,为了获得灵感,您可能想看看您正在尝试做的事情的 node.js 实现:

frontail(1) – tail -F output in browser

使用 Socket.IO用于其通信实现。

关于ruby - 使用 Ruby 将文件流式传输到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127721/

相关文章:

XCode 疯狂 : Trying to compile a file that isn't referenced and doesn't exist

Java Logger : Create file with rotation number + . 日志作为后缀

ruby-on-rails - 删除由markdown创建的html

python - 将文件中的句子转换为列表中的单词标记

algorithm - 在文件中表示二叉树

logging - Laravel 请求和响应日志记录

json - 使用fluentd进行docker日志记录时如何获取容器和图像名称?

ruby - ruby 中的树和图数据结构

ruby-on-rails - Rails 合并两个哈希数组?

ruby - 如何从文本中提取 URL