Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在web浏览器中实现日志窗口?_Javascript_Html_Http_Logging - Fatal编程技术网

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

Javascript 如何在web浏览器中实现日志窗口?,javascript,html,http,logging,Javascript,Html,Http,Logging,我想在我的网络设备上添加一个基于HTML/web浏览器的“日志窗口”。具体来说,我的设备有一个定制的web服务器和一个事件日志,我希望能够让web浏览器窗口保持打开状态,例如,让事件在发生时以文本形式显示在web浏览器窗口中。然后,人们可以用它作为一种快速的方法来监控系统正在做什么,而不需要运行任何特殊的软件 我的问题是,实现这一点的最佳方式是什么?我尝试过一种显而易见的方法——让我的设备的嵌入式web服务器无限期地保持HTTP/TCP连接打开,并在事件发生时将必要的文本写入TCP套接字——但问

我想在我的网络设备上添加一个基于HTML/web浏览器的“日志窗口”。具体来说,我的设备有一个定制的web服务器和一个事件日志,我希望能够让web浏览器窗口保持打开状态,例如,让事件在发生时以文本形式显示在web浏览器窗口中。然后,人们可以用它作为一种快速的方法来监控系统正在做什么,而不需要运行任何特殊的软件

我的问题是,实现这一点的最佳方式是什么?我尝试过一种显而易见的方法——让我的设备的嵌入式web服务器无限期地保持HTTP/TCP连接打开,并在事件发生时将必要的文本写入TCP套接字——但问题是大多数web浏览器(如Safari)在服务器关闭TCP连接之前不要显示网页,因此结果是日志数据永远不会出现在web浏览器中,这就好像加载网页要花很长时间一样


有什么诀窍可以让它奏效吗?我可以将其实现为Java小程序,但我更喜欢更轻量级/简单的东西,或者只使用HTML,或者可能使用HTML+JavaScript。另外,我希望避免让web浏览器“轮询”服务器,因为这可能会引入太多的延迟(如果重新加载延迟很大)或给系统带来负载(如果延迟很小)

如果不想使用轮询,您或多或少会被困在完全在浏览器之外编写日志查看器。然而,编写轮询非常简单,它可以很好地最小化延迟和系统负载(正如您提到的)


这其中的诀窍是使用Ajax+长轮询。

好吧,既然你说你愿意用javascript做这件事:

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

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


显然,3号和4号是你要照顾的。当您得到输出时,您所要做的就是将responseText写入一个div,然后就可以设置了。查找xmlhttpobject属性和用法。

,因为它现在已经很旧了。您可以为此使用web套接字