Push technology, or server push
数据交互有两种模式:Push(推模式)、Pull(拉模式)。For What?
for publish/subscribe function
ex:
Push:
WebSockets : 网络长连接,服务方有相关数据,直接通过长连接通道推送到客户端。其优点是及时,一旦有数据变更,客户端立马能感知到;另外对客户端来说逻辑简单,不需要关心有无数据这些逻辑处理。
缺点是不知道客户端的数据消费能力,可能导致数据积压在客户端,来不及处理。
Pull:
拉模式指的是客户端主动向服务端发出请求,拉取相关数据。其优点是此过程由客户端发起请求,故不存在推模式中数据积压的问题。缺点是可能不够及时,对客户端来说需要考虑数据拉取相关逻辑,何时去拉,拉的频率怎么控制等等。
Long Polling(长轮询),必然少不了提起Polling(轮询),这都是拉模式的两种方式。
Polling是指不管服务端数据有无更新,客户端每隔定长时间请求拉取一次数据,可能有更新数据返回,也可能什么都没有。
Long Polling原理也很简单,相比Polling,客户端发起Long Polling,此时如果服务端没有相关数据,会hold住请求,直到服务端有相关数据,或者等待一定时间超时才会返回。返回后,客户端又会立即再次发起下一次Long Polling。这种方式也是对拉模式的一个优化,解决了拉模式数据通知不及时,以及减少了大量的无效轮询次数。(所谓的hold住请求指的服务端暂时不回复结果,保存相关请求,不关闭请求连接,等相关数据准备好,写会客户端。)
ref:
https://en.wikipedia.org/wiki/Push_technology#Long_polling
https://www.jianshu.com/p/d3f66b1eb748
https://ably.com/blog/websockets-vs-long-polling

No comments:
Post a Comment