Javascript 如何在web浏览器中实现日志窗口?
我想在我的网络设备上添加一个基于HTML/web浏览器的“日志窗口”。具体来说,我的设备有一个定制的web服务器和一个事件日志,我希望能够让web浏览器窗口保持打开状态,例如,让事件在发生时以文本形式显示在web浏览器窗口中。然后,人们可以用它作为一种快速的方法来监控系统正在做什么,而不需要运行任何特殊的软件 我的问题是,实现这一点的最佳方式是什么?我尝试过一种显而易见的方法——让我的设备的嵌入式web服务器无限期地保持HTTP/TCP连接打开,并在事件发生时将必要的文本写入TCP套接字——但问题是大多数web浏览器(如Safari)在服务器关闭TCP连接之前不要显示网页,因此结果是日志数据永远不会出现在web浏览器中,这就好像加载网页要花很长时间一样Javascript 如何在web浏览器中实现日志窗口?,javascript,html,http,logging,Javascript,Html,Http,Logging,我想在我的网络设备上添加一个基于HTML/web浏览器的“日志窗口”。具体来说,我的设备有一个定制的web服务器和一个事件日志,我希望能够让web浏览器窗口保持打开状态,例如,让事件在发生时以文本形式显示在web浏览器窗口中。然后,人们可以用它作为一种快速的方法来监控系统正在做什么,而不需要运行任何特殊的软件 我的问题是,实现这一点的最佳方式是什么?我尝试过一种显而易见的方法——让我的设备的嵌入式web服务器无限期地保持HTTP/TCP连接打开,并在事件发生时将必要的文本写入TCP套接字——但问
有什么诀窍可以让它奏效吗?我可以将其实现为Java小程序,但我更喜欢更轻量级/简单的东西,或者只使用HTML,或者可能使用HTML+JavaScript。另外,我希望避免让web浏览器“轮询”服务器,因为这可能会引入太多的延迟(如果重新加载延迟很大)或给系统带来负载(如果延迟很小)如果不想使用轮询,您或多或少会被困在完全在浏览器之外编写日志查看器。然而,编写轮询非常简单,它可以很好地最小化延迟和系统负载(正如您提到的)
这其中的诀窍是使用Ajax+长轮询。好吧,既然你说你愿意用javascript做这件事:
- 让您的进程连续写入,而不关闭连接
- 在客户端(浏览器)中,使用xmlhttpobject并监视就绪状态 0=未初始化 1=装载 2=已加载 3=交互式 4=完成
显然,3号和4号是你要照顾的。当您得到输出时,您所要做的就是将responseText写入一个div,然后就可以设置了。查找xmlhttpobject属性和用法。,因为它现在已经很旧了。您可以为此使用web套接字