数据交互有两种模式:Push(推模式)、Pull(拉模式)。
1 推模式指的是客户端与服务端建立好网络长连接,服务方有相关数据,直接通过长连接通道推送到客户端。
<1>优点:及时,一旦有数据变更,客户端立马能感知到;另外对客户端来说逻辑简单,不需要关心有无数据这些逻辑处理。
<2>缺点:不知道客户端的数据消费能力,可能导致数据积压在客户端,来不及处理。
2 拉模式指的是客户端主动向服务端发出请求,拉取相关数据。
<1>优点:此过程由客户端发起请求,故不存在推模式中数据积压的问题。
<2>缺点:可能不够及时,对客户端来说需要考虑数据拉取相关逻辑,何时去拉,拉的频率怎么控制等等。
轮询和长轮询
两种均为pull拉模式
1 Polling<轮询>:不管服务端数据有无更新,客户端每隔定长时间请求拉取一次数据,可能有更新数据返回,也可能什么都没有。
2 Long Polling<长轮询>:客户端发起Long Polling,此时如果服务端没有相关数据,会hold住请求,直到服务端有相关数据,或者等待一定时间超时才会返回。返回后,客户端又会立即再次发起下一次Long Polling。(所谓的hold住请求指的服务端暂时不回复结果,保存相关请求,不关闭请求连接,等相关数据准备好,写会客户端。)