如何在Web浏览器中实现日志窗口?

时间:2010-05-04 21:52:50

标签: javascript html http logging

我有兴趣在我的支持网络的设备上添加基于HTML /网络浏览器的“日志窗口”。具体来说,我的设备有一个自定义的Web服务器和一个事件日志,我希望能够打开一个Web浏览器窗口,例如http://my.devices.ip.address/system_log并且当事件发生时,事件会在Web浏览器窗口中显示为文本。然后,人们可以使用它来快速监控系统正在做什么,而无需运行任何特殊软件。

我的问题是,实现这个的最佳方法是什么?我尝试了一种显而易见的方法 - 让我的设备的嵌入式Web服务器无限期地打开HTTP / TCP连接,并在事件发生时将必要的文本写入TCP套接字 - 但问题在于大多数Web浏览器(例如Safari)在服务器关闭之前不显示网页,TCP连接已经关闭,结果是日志数据永远不会出现在Web浏览器中,它只是表现为页面永远在负荷。

是否有一些技巧可以使这项工作?我可以将它实现为Java applet,但我更喜欢更轻量级/简单的东西,要么只使用HTML,要么使用HTML + JavaScript。此外,我想避免让网络浏览器“轮询”服务器,因为这会导致过多的延迟(如果重新加载延迟很大)或者加载系统(如果延迟很小)

3 个答案:

答案 0 :(得分:1)

如果您不想使用轮询,那么您或多或少会完全无法在浏览器之外编写日志查看器。但是,编写轮询非常简单,可以最大限度地减少延迟和系统负载(正如您所提到的那样)。

这方面的诀窍是使用Comet,这基本上是Ajax +长轮询。

答案 1 :(得分:0)

好吧,既然你说你愿意在javascript中这样做:

  • 让您的流程连续写入,而不关闭连接
  • 在客户端(浏览器)中使用xmlhttpobject并监视就绪状态。

    0 =未初始化 1 =加载 2 =已加载 3 =互动 4 =完成

显然,你正在照顾的是3和4。当你得到输出时,你所要做的就是将responseText写入div,然后进行设置。查看here了解xmlhttpobject属性和用法。

答案 2 :(得分:0)

因为现在已经很老了。您可以使用网络套接字