点名表扬最近收集的浏览器更新,記得半年前有對Chrome後台進行反饋過,說如果頁面與頁面之間有分類就好了,結果今天看到現成,讓我這個頁面殺手感到驚喜呀;相比之下一直沉迷於搜索引擎修補的百度也終於有點新意了,開始放下自我觀察用戶了,而這些小改變也許是大廠走向光明或者沒落的轉機,我得把它記下來先。

网页端的消息接收,用什么方式好呢?

电话簿
网页收发消息是一个常见的系统应用场景,通常我们有两种方式来完成消息的发送,一种是通过客户端来拉取消息,一种是服务端推送消息,到底使用哪种方式好一点呢?
具体使用哪种方式,我们需要根据实际的业务场景来分析,没有绝对正确的方式,只有适不适合。所以,我们分析一下网页端的用户一般都存在哪些应用场景:
系统将通知发送给用户——这种场景下,用户对于消息的实时性要求并不高
用户和用户之间发送聊天消息——这种场景下,用户就对实时性的要求很高了,越实时越好
我们抛开纯技术实现不谈,只是从解决方案来谈,由于是使用的是网页端,HTTP协议是通过“请求-响应”的方式传递,网页端和服务端之间是没有消息通道的,那么怎么来实现消息的接收呢?
轮询拉取
轮询拉取可以说是所有消息的实现方案中最简单的一种,实现起来也非常简单。

大致的实现方法如下:
发送方发送消息后,消息先进入队列中暂存(也可以是数据库)
网页端建立一个timer,固定时间(例如:30秒)轮询到队列(或数据库)中拉取消息
无论有没有拉到消息,收到返回的消息后,30秒后再次轮询拉取
这种方式最大的优势就是实现非常简单,而且容易理解,早期的聊天室基本都是这种实现方式,我曾经给朋友做过一个答题的系统,有多个终端,每个终端看到的内容需要有所不同,也是使用的这种实现方式。
当然这种实现方式的缺点也是非常明显:
时效性差:随着timer间隔时间的长短,收到消息的延时时间会被拉长,以30秒为例,消息最大的延时就会达到30秒
效率差:网页端会不停的请求服务器,但是发消息的频率事实上并没有这么高,如果10次轮询才拉到一条消息,那么有效性只有10%,大量的浪费了服务器资源
使用这种方式,时效性和效率是矛盾的,我降低timer的间隔时间,就可以提高时效性,但是会降低效率,例如:间隔时间降低到1秒,这种基本就可以趋近于实时了,但是可能300次轮询才会拉到1条消息,有效性只有0.3%了。
所以,由于这个不可调和的矛盾存在,这种解决方案只能适用于一些同时在线用户少,对实时性要求不高的场景中。
长连接
如果想要同时保证时效性和效率,其实长连接是一个不错的选择,一般我们的PC端聊天软件都是使用的长连接方式来实现。而网页端的长连接实现方式通常有两种:
WebSocket
FlashSocket
FlashSocket就不说了,如果不是网页游戏的话其实很少会用到这个方案来做长连接,它要求用户必须安装了Flash插件。如果是HTML网页端的话,其实更多会选择WebSocket这种方案,WebSocket的优点非常明显,建立一次握手以后,服务端和网页端就可以双向通信了,摆脱了HTTP的Request-Response的限制,消息的及时性和效率都大幅度的提升了。
但是WebSocket也不是那么简单,其中的坑也非常的多,如何单个生产者推送给多个消费者,如何保证不重复推送,断线以后的重连等等。当然更重要的是,不同的浏览器对于WebSocket的支持可能不同,兼容性也是一大问题,所以使用得并不是很多。
那有没有一种更常用的方法来处理消息的接收呢?
HTTP长轮询
想要建立一条HTTP长轮询的通道,我们需要在浏览器和服务器之间建立一条通知连接。

而这条通知连接不同于普通的HTTP连接,它要有一些特殊性:
这个HTTP连接只能用来收取推送的消息
不同于普通的Request-Response HTTP请求,这个HTTP连接不会马上响应,会先被Hold在这里,知道接到通知的消息或者超过了约定的时间(我们都知道,HTTP请求是会有超时的,一般我们都会设置一个请求超时的阈值,如果超过这个阈值,那么请求就会被粗暴的断开,返回一个错误消息,为了保证我们的请求不被粗暴的对待,我们需要在超时之前优雅的返回一个结果)
怎么来Hold住这个请求呢?
场景一:队列里面有消息

发起一个通知连接HTTP请求
发现消息队列里面有消息,于是拿到消息然后立刻返回
收到返回的消息后,立刻再次发起通知连接的请求
场景二:队列里面没有消息

发起一个通知连接HTTP请求
发现消息队列里面没有消息,于是一直等待直到达到时间阈值然后返回
收到返回的消息后,立刻再次发起通知连接的请求
个人认为,长轮询的请求就一直保持对消息队列的数据拉取就行,如果有实时的消息来了,也等到它进入消息队列以后再处理,这样可以防止消息丢失,也可以降低系统的复杂度。
总的来说,网页端的消息接收,用什么方式好呢?拉和推都可以,每种方式有每种方式的优缺点。
如果业务不复杂,实时性不高,建议轮询拉取
最佳方案是推,但是WebSocket和FlashSocket各有局限性,实现起来也麻烦一点
常见方式就是长轮询,需要开辟一条专用的消息通道。 https://t.cn/R2WxlNJ

#张店[超话]##淄博[超话]#生活話語

(来自瀏覽器)

人生是记忆的集合体,有品不尽的苦辣酸甜。生命看破了不过是无常;爱情看破了不过是聚散罢了,而在聚散离合之间,又充盈了多少悲欢交集的缘分。本以为萍水相逢,缘起缘灭在一瞬間。而这瞬間又有多少能修到了朝朝暮暮的缘分。 ​ https://t.cn/RJZZyNE


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • #网传杨紫主演电影照明商店#吃瓜不信瓜演员杨紫正在拍摄大女主《长相思》-小夭[羞嗒嗒]正在热播剧《沉香如屑·沉香重华》-颜淡[好喜欢]待播主旋律电影《猎毒》-女
  • 我相信每一个追剧的人都是付出了真情实感的,所以我们更应该明白“爱也是感同身受”有人说电视剧高开低走难免俗套,但我看到一句话很好“这种价值观的确不符合现在的时代,
  • 然胃之所以不降,有因热者,宜佐以瓜蒌仁、白芍;其热而兼虚者,可佐以人参;有因凉者,一可佐以干姜、白芍(因凉犹用白芍者,防干姜之热侵肝胆);其凉而兼虚者,可佐以白
  • 北交所对于对整个金融行业肯定是个利好,并不是现在北交所怎么样,就那点市值,那点流动性能对券商业务能有多大的提升。企业能够直接融资的地方很少,新三板聚集了8000
  • 这裤子 大家收到觉得腰紧 可以多洗洗 洗洗会松点 因为纱用的比较好 弹力大 之后一批我让豹子头老板用松点的纱哈 (颜色就是实拍色哈 灰咖色 看实拍哈)还有就是说
  • 另外,可以360度旋转,还有安全童锁功能,0到12岁高度可随意调节,头枕和颈枕设计防止空头窝脖子…除了贵,实在是挑不出什么硬伤。这个材料很少有安全座椅会用上,因
  • 我觉得网上哪些“不买华为就是不爱国”的言论简直就是高级黑……再加上“月亮门”糟糕的营销,坏了华为手机部门的名声,再加上那些口称花粉为水军的人,本来就很像水军的好
  • #以科技定义豪华的车# #格局重塑#南怀瑾:人这辈子,有的时候你没有做成的事,其实是老天在保护你。但是现在这个内卷的时代,还只用老几样去满足老板们,早已行不通
  • 理解与陪伴你清风白露守我百岁无忧,我凤冠霞帐许你此生不渝感情里,最好的安全感,是理解和陪伴; 最好的爱情,是我需要的时候你都在。你宠我像个孩子我崇拜你像个英雄日
  • 早在之前两人曾经参加港台的综艺《花花万物》时,就出现两个人三观不合的情况,赖弘国说自己在这段感情被公布以来,承受了很多舆论的压力和攻击,甚至在录制节目前两人还为
  • 三个月内竟上演两次冷暴力分cp】除夕要红包初一分手初二落地复成新cp 挂人方:阿诺狄*拉诺西亚 自称 我被挂方:安迷修wet*拉诺西亚 简称 安【转发抽奖,转发
  • 【六度集经讲记04】沙门普施翻江倒海斗龙神,勇夺海王宝珠 普施做了沙门后,周游列国,教化群生,经过一个大国。国家里有一户豪姓之家,知书明理。见到普施仪表堂堂,
  • 上海郊区自驾|这座宝藏公园藏不住了|||在宝山最北面靠海处,有一座种满了乔木林的公园——罗泾水源涵养林,也叫做“千亩涵养林”是长江水源保护地 现在这个季节,满眼
  • 很想感受那种,深秋树叶纷飞,可以踩到金黄的落叶上发出清脆的声音。可惜这是北方才能有的景象,南方的深秋还是一片葱葱郁郁,花团锦簇,要不是冷空气来袭,都不会意识到已
  • 基本上百分之九十以上的平台都出现了藏品滞销的情况,唯一几个滞销不是很明显的平台,都是正规军,基本卖的都是文博文旅,差一点的也有一些非遗、文化IP藏品。 不
  • 身在农村的一个弱女子,每天要照顾瘫痪公公的吃喝拉撒,照顾丈夫和孩子,田地里的农活,全落在一个女人的肩上,生活的艰辛和磨难,没有经历过的人,真的没法想象和体会。这
  • 我等明天一起发pyq(要去掉奶茶不然会被麻麻) 发一下原图! 祝福今天看到的每一对新人!(最起码十对肯定有了,搞了一个滤镜,pyq发吧[馋嘴]) 微博专享丑照
  • ”#每日一善[超话]#[哇]#每日一善# [哇]#阳光信用# 新时代是奋斗者的时代,更是青年人担当作为的时代。 #成毅沉香如屑# cy #成毅沉香重华# @成毅
  • • 沈阳地区:景点推荐1:沈阳世博园风景区,被誉为“森林中的世博园”通行线路:G1212沈吉高速世博园站景点推荐2:沈阳怪坡风景区,辽宁八大奇观之一通行线路:G
  • V+是可以看到早盘信息的,要感恩新浪,帮咱开通V+! 但以后是不是每天可以看到,我不确保多久,但今天之前买过V+的,私信我,确保你时间段内可以!我还是哪句话,