# http 的架构模式

http 是客户端/服务器模式中请求-响应所用的协议,在这种模式中,客户端(一般是 web 浏览器)向服务器提交 http 请求,服务器响应请求的资源

# http 的特点

  • http 是半双工协议,也就是说,在同一时刻数据只能单向流动,客户端向服务器发送请求(单向的),然后服务器响应请求(单向的)。
  • 服务器不能主动推送数据给浏览器。

# 2.双向通信

comet 是一种用于 web 的推送技术,能使用服务器能实时的将更新的信息传送到客户端,而无需客户端发出请求,目前有三种实现方式:轮询、长轮询和 iframe 流

# 1.轮询

  • 轮询是客户端和服务器之间会一直进行连接,每隔一段时间就询问一次
  • 这种范式连接数会很多,一个接受,一个发送。而且每次发送请求都会有 http 的 header,会很耗流量,也会消耗 cpu 的利用率。

# 2.长轮询

  • 长轮询是对轮询的改进版,客户端发送 http 给服务器之后,看有没有新消息,如果没有新消息,就一直等待。
  • 当有新消息的时候,才会返回给客户端。在某种程度上减小了网络带宽和 cup 利用率等问题。
  • 由于 http 数据包的头部数据量往往很大(通常有 400 多个字节),但是真正被服务器需要的数据却很少(有的只有 10 个字节左右),这样的数据包在网络上周期性的传输,难免对网络带宽是一种浪费。

# iframe 流

  • 通过在 html 页面里嵌入一个隐藏的 iframe,然后将这个 iframe 的 src 属性设为对一个长连接的请求,服务器端就能源源不断地向客户端推送数据。