Web端服务器推送技术原理分析及dwr框架简单的使用(1)
创始人
2025-01-20 21:34:53
0

随着 Ajax技术的兴起,让广大开发人员又一次看到了使用浏览器来替代桌面应用的机会,并且这次机会非常大。Ajax将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行,这使得网络延迟带来的视觉差异将会消失。

但是,在浏览器中的 Ajax应用中存在一个致命的缺陷无法满足传统桌面系统的需求。那就是“服务器发起的消息传递”(Server-Initiated Message Delivery)。在很多的应用当中,服务器软件需要向客户端主动发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件的发生。当这些变化发生的时候,服务器需要主动的向客户端实时的发送消息。例如股票的变化。在传统的桌面系统这种需求没有任何问题,因为客户端和服务器之间通常存在着持久的连接,这个连接可以双向传递各种数据。而基于HTTP协议的 Web应用却不行。

2 客户端得到通知的方式

图1 传统web 访问机制

我们知道, Web的访问机制天生是设计用来 pull数据的,如图 1,也就是只允许 Browser端主动发起请求,server是被动的响应,不允许Server向 Browser发出一个 connection请求,也就是说没有为server向 Browser push数据提供设计实现.虽然没有直接的实现方法,却可以使用一些变通的方式完成类似的功能。

2.1 传统轮询

在 Web早期,这一点常使用meta刷新实现。这将自动指示浏览器在指定秒数之后重新装载页面,从而支持简陋的轮询(polling)。例如在HTML文件中加入 ,实际上就是 HTTP 头标告知浏览器每 12 秒更新一次文档。

优点 :不需要服务器端的配置。

缺点 :

a) 糟糕的用户体验

b) 对服务器的压力很大,并且造成带宽的极大浪费。

2.2 Ajax 轮询

Ajax隔一段时间(通常使用JavaScript的setTimeout函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间隔多长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,务器上的新数据就需要越多的时间才能到达客户机。

优点:

a) 不需要太多服务器端的配置。

b) 降低带宽的负荷(因为服务器返回的不是完整页面)。

缺点:

a) 对服务器的压力并不会有明显的减少。

b) 实时性差,有一定的延迟。

应用: 这是一项非常常见的技术,例如,大多数 webmail应用程序就是通过这种技术在电子邮件到达时显示电子邮件的。

2.3 Comet

Comet方式通俗的说就是一种长连接机制(long lived http)。同样是由Browser端主动发起请求,但是Server端以一种似乎非常慢的响应方式给出回答。这样在这个期间内,服务器端可以使用同一个connection把要更新的数据主动发送给Browser。因此请求可能等待较长的时间,期间没有任何数据返回,但是一旦有了新的数据,它将立即被发送到客户机。Comet又有很多种实现方式,但是总的来说对Server端的负载都会有增加.虽然对于单位操作来说,每次只需要建议一次connection,但是由于connection是保持较长时间的,对于 server端的资源的占用要有所增加。

优点: 实时性好(消息延时小);性能好(能支持大量用户)

缺点: 长期占用连接,丧失了无状态高并发的特点。

应用: 股票系统、实时通讯。

2.4 Flash XML Socket

这种方案实现的基础是:一、Flash提供了 XMLSocket类。二、 JavaScript 和 Flash的紧密结合:在 JavaScript可以直接调用 Flash程序提供的接口。

缺点:

a) 因为XMLSocket没有HTTP隧道功能,XMLSocket类不能自动穿过防火墙;

b) 因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非HTTP通道端口进行限制;

应用: 网络聊天室,网络互动游戏。

2.5 Java Applet 套接口

在客户端使用 Java Applet,通过 java.net.Socket或java.net.DatagramSocket或java.net.MulticastSocket 建立与服务器端的套接口连接,从而实现“服务器推送 ”。

缺点: 需要客户端安装 JAVA虚拟机。

3 Comet 介绍

Comet 有时也称反向 Ajax或服务器端推技术(server-side push)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉Web 应用程序,尤其是HTTP协议,那么您就会知道,这绝不简单。实现Comet风格的 Web应用程序,同时保证在浏览器和服务器上的可伸缩性,这只是在最近几年才成为可能。目前一些主流网站都有类似的原理,例如:webQQ、开心网、校内等等,它们中消息动态都是采用类似的技术,只是具体实现方式不一样。

COMET的精髓就在于用服务器与javascript来维持浏览器的长连接,同时完成服务器端事件的浏览器端响应。这样的事件广播机制是跨网络的,同时也是实时的。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取。

84553)]

[外链图片转存中…(img-S4BSZRiX-1712549484553)]

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取。

相关内容

热门资讯

透视真的!青龙辅助器,soho... 透视真的!青龙辅助器,sohoo poker辅助,2026版教程(有挂开挂辅助工具)1、下载安装好s...
一分钟了解!微乐小程序辅助脚本... 一分钟了解!微乐小程序辅助脚本平台,杭州边锋辅助软件(有挂开挂辅助神器)1、下载安装好微乐小程序辅助...
9小时掌握!情怀国粹辅助,欢乐... 9小时掌握!情怀国粹辅助,欢乐达人正版脚本(有挂开挂辅助工具);无需打开直接搜索加薇13670430...
每日必看教程!斗棋bug,金华... >>您好:佛手在线辅助确实是有挂的,很多玩家在这款佛手在线辅助游戏中打牌都会发现很多用户的牌特别好,...
透视苹果版!新畅游互娱辅助ap... 哈糖大菠萝万能挂是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
四分钟体悟!优优乐暗宝源码,小... 您好:小程序微乐游戏辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
每日必备!多乐游戏辅助脚本下载... 每日必备!多乐游戏辅助脚本下载,随意玩辅助器下载(有挂开挂辅助下载);亲,多乐游戏辅助脚本下载这款游...
透明讲解!德普之星私人局辅助器... 大家好,今天小编来为大家解答德普之星私人局辅助器这个问题咨询软件客服可以免费测试直接加微信(1367...
2分钟熟悉!福建天天开心教程,... 2分钟熟悉!福建天天开心教程,哈局13张辅助器(有挂开挂辅助下载);打开点击测试直接进入微信(136...
最新通报!余干中至五十k有挂装... 最新通报!余干中至五十k有挂装吗,浙江游戏大厅脚本修改(有挂开挂辅助挂);无需打开直接搜索加薇136...