场景三,新消息来时,正好有通知连接在,则:
- 新消息来时,正好有通知连接在
- 通知连接实时将消息带回
- 立马再发起通知连接
上面三个场景的最终状态,都是“一定,永远,会有一条通知连接,连接在浏览器与服务器之间”,这样就能够保证消息的实时性 。当然,有人会说,HTTP的返回与再次发起会有一个时间差,如果这个时间差,恰巧有新消息过来呢?
文章插图
场景四,新消息来时,没有通知连接,则:
- 新消息来时,没有通知连接
- 把新消息放入队列
最后这个场景,发生的概率非常小,但也确保了在“HTTP的返回与再次发起会有一个时间差”内,消息不会丢失,在通知连接发起后,消息能够实时返回 。
总结
网页端收消息,究竟是推还是拉?
- 最容易想到的是拉,但实时性和效率是一对无法调和的矛盾
- 最佳的方式是推,但WebSocket和FlashSocket各有局限性
- 最通用的方式是长轮询,通过HTTP短连接拼装长连接,具体是通过“夯住”“只收推送通知”的“通知连接”来实现的,能够做到消息的实时性到达
来源公众号:架构师之路
作者:沈剑
推荐阅读
- 教师|终于等到你,教师行业或将实行“工龄退休”,好消息一波接一波
- 淘宝只卖5元的Win10靠谱吗?
- 三星|硬上革命性技术结果翻车:消息称三星3nm工艺无法如期量产
- 下个月起正式实施,机动车迎来5个好消息
- iPhone|赶快囤了?消息称苹果今年9月行动:欲放弃一代神机iPhone 11全系
- 再见HTML ! 用纯Python就能写一个漂亮的网页
- 教育部|教育部下发好消息,“第一学历”迎来变动,专科生不再受限制!
- 网页怎么搜索关键词 淘宝关键词搜索技巧
- 手淘消息中心是什么流量 手淘推荐的流量是哪里来的
- 浅谈浏览器架构、单线程js、事件循环、消息队列、宏任务和微任务