系列入口:编程实战:自己编写HTTP服务器(系列1:概述和应答)-CSDN博客
本文是精华,前面所有的铺垫只是为了实现页面数据实时刷新啊!
目录
一、我们想要的实时系统监控界面是什么
二、原理
2.1 流水式页面
2.2 滚动到底部
2.3 动态更新
2.4 重新加载页面
2.4 更多技巧
三、动态更新的一些提示
理想的实时系统的监控界面是一个监控屏幕,上面各种数字和指示灯闪烁。但是程序只能像流水一样吐出数据,所以前端界面需要做很多事情来解决这个问题。
方案不过是“推”或者“拉”。“推”就是服务端主动发送,客户端等待接收,程序不算简单。“拉”就是客户端定时请求,因为是客户端完全控制,程序比“推”简单。
但是我们希望更简单一些,因为没有前端帮忙,最好一切都在我们的程序里解决。办法不难,需要利用HTTP和HTML的几个小特性。
大部分情况下web页面都是一个完整的页面,有HTTP请求头、有body(就是html页面内容),请求头包含一个“Content-Length”指示内容长度。
但是这不是绝对的,如果没有“Content-Length”,浏览器仍然可以正确处理页面,只不过浏览器会以连接结束作为数据结束的标志(因此不可能使用http1.1的保持连接)。
浏览器处理这种页面的时候(其实也包括所有页面),总是尽快显示内容,不用等到内容结束,能理解多少就显示多少(所以有时候你会看到页面先是显示一些东西,然后布局变化了,可能变化几次,最后才稳定下来)。
所以如果不发送页面结束给浏览器(页面结束是“