- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
消息推送機制技术设计
消息推送技术
消息推送技术
消息推送
Web 层消息推送
套接字
HTTP 请求轮询
简单轮询
长轮询
HTTP 流
HTML 5 WebSocket
多客户端支持
APIs 多样
网络连接不稳定
最小化流量
服务层消息服务
Java Message Service
消息域
消息确认
技术设计
目标
Web 层设计
Pushlets 组件
JS 客户端
服务层设计
处理步骤
消息表
逻辑架构
推时序
关键点
参考
消息推送
消息推送是针对 Web 应用开发领域的技术,指服务端以主动方式将信息送达客户端。主要用于提升用户体验,避免用户刷新页面从服务端拉取数据。例如 Web 邮件中自动出现刚收到的邮件项,Web 即时通讯自动提示新到消息等应用场景。
要实现消息推送机制,涉及两方面的内容:
Web 层消息推送
服务层消息服务
Web 层消息推送
套接字
可以使用套接字接口进行全双工通讯。可以通过 Flash XMLSocket、Java Applet 技术实现。
但由于实现方案与厂商技术绑定过紧,不属于 Web 标准化范畴,并且存在一些限制(通讯端口开启安全、客户端插件),这里不进行描述。
HTTP 请求轮询
目前的 Web 应用是基于 HTTP 协议的,其规定了请求-响应的处理模型,位于应用层的单工通讯模式使得纯粹意义上的服务端推送方式变得难以实现。
为了基于 HTTP 协议进行“推送”实现,可由客户端发起 HTTP 请求轮询,服务端在请求后返回响应。
根据轮询时间、请求处理方式,分为以下三种推。
简单轮询
客户端一般以定时方式发起请求,服务端处理后返回响应。
原理、客户端/服务端实现简单
可根据应用场景调整轮询时间间隔
服务端需要处理大量请求
长轮询
客户端发起请求后服务端将该请求挂起(不返回响应),直到超时、异常或需要处理响应(推内容)才返回。客户端收到响应后再次请求(即轮询)服务端,并处理响应。
实时性高
服务端需要管理挂起请求
HTTP 流
客户端发起请求后服务器端处理请求,并通过 HTTP 流一直向客户端写入数据,直到超时或异常才返回响应。连接断开后客户端再次请求服务端,属于长轮询的一种。
HTML 5 WebSocket
这是标准化的客户端全双工通讯规范,但由于目前服务端规范尚未成型,且考虑到现有客户端对 HTML 5 的支持有限,这里不进行描述。
多客户端支持
上述介绍是针对浏览器客户端的,在实际应用场景中,还需要考虑其他客户端支持,例如 iOS、Android 等。
在移动客户端方面,需要考虑如下几点。
APIs 多样
不同客户端本地 APIs 接口存在差异,但都支持基本的 HTTP 协议。直接基于 HTTP 协议进行开发可将差异最小化。
网络连接不稳定
通讯信道打开后不一定能长时间维护,客户端与服务端的状态管理复杂。
最小化流量
需要尽量最小化网络流量,提升移动客户端可用性。
服务层消息服务
消息是系统或组件间通讯的一种低耦合方式,是系统级异步架构的基础。
在 Web 消息推送中,服务端管理应用状态,当状态发生变迁时需要通知客户端,完成消息推送。
Java Message Service
需要重点关注如下技术点:
消息域
点对点只有一个客户端可以接收到消息。
发布/订阅广播给订阅的客户端。可配置持久化订阅。
消息确认
会话本地事务提交时会对收到的消息进行确认,回滚时将重传所有消息
非本地事务确认:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE、Session.DUPS_OK_ACKNOWLEDGE
技术设计
目标
支持浏览器客户端的推送
高性能、高可靠
模块化,不与应用耦合
未来可支持多种移动客户端
Web 层设计
Web 层考虑采用开源组件 Pushlets 进行实现。
Pushlets 组件
Pushlets 基于 HTTP 协议的发布/订阅模型,提供了 Poll(轮询)、Pull(拉)两种推方式实现。其中 Pull 即长轮询方式,当有消息时就返回。
发布:GET/POST 或方法调用(Dispatcher 接口)
订阅:GET 流,拉/轮询模式
树形主题:可层次化订阅
协议格式:JS,XML(JSON 尚未支持)
对使用 HTTP 协议的客户端都可用
易扩展:例如事件源实现
方便整合:可独立为 Web 应用,也可为 Web 应用组件
多种实现:J2EE/servlets,JavaScript (AJAX)
JS 客户端
js-pushlet-client.js
使用 “隐藏 iframe 技巧”
格式:JavaScript 函数事件
ajax-pushlet-client.js
使用 XMLHtt
您可能关注的文档
最近下载
- 12J201平屋面建筑构造图集.docx VIP
- 陶瓷绝缘连接器.pdf VIP
- 土木专业英国规范NA+A1_2012 to BS EN 1993-2_2006.pdf VIP
- 海南优腾爱科医疗科技有限公司医疗器械研发生产环评报告表.docx
- DB31_T 416-2008 城市道路路名牌(法规规范).pdf VIP
- 电力井施工规范.docx VIP
- 2023年必威体育精装版的李白赞美杨贵妃的诗句.docx VIP
- ESC+2024+心房颤动(房颤)管理指南解读课件.pptx VIP
- 2025四川乐山市五通桥区发展产业投资有限公司公开招聘11人笔试备考题库及答案解析.docx VIP
- 人工智能基础(国科技大)中国大学MOOC慕课 章节测验 客观题答案.docx VIP
文档评论(0)