push模式
说明:server端主动推送给client端。
优点:消息及时到达。
缺点:无法感知client的消费能力,可能造成client消息积压。
pull模式
说明:client主动查询server或拉取。
优点:不存在消息积压的情况。
缺点:client要衡量拉取查询请求server的频率,而且如果频繁查询请求,可能影响系统性能或网络;相反如果查询过慢,那又降低了消息的及时性。
轮询和长轮询是pull模式的两种实现。
polling
client定时从server拉取,无论是否有消息或变更,都立即返回client。可能会造成大量无效请求。
longpolling
client定时从server拉取,如果没有消息,server会临时性的保持住这个连接一段时间。如果在这个期间有消息或者有变更,server会立刻响应式返回client。若在此期间无消息,那到了指定时间,server就会放弃这个连接,等待client的下次拉取。
优点:整合了push和pull的优点,提高了消息的实时性,又降低了无效请求,以及client消息积压的可能。