atitit.web 推送实现方案集合
atitit.web 推送实现方案集合
1. 俩中模式 Push/Pull 1
2. 需要实现的特性 2
2.1. 推送消息广播。 2
2.2. 推送定向消息。 2
2.3. 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 2
2.4. 消息缓存机制,确保长轮询工作模式下不丢失消息。 2
2.5. 客户端正常下线,服务端可立即感知。 2
2.6. 客户端异常停止工作,服务端可定时检查并感知。 2
2.7. 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。 2
3. 客户端实现::长轮询(简单轮询,长轮询,HTTP 流)、长连接、自动选择三种工作模式 3
3.1. HTTP 请求轮询 3
3.2. 简单轮询 3
3.3. 长轮询 4
3.4. HTTP 流 4
4. 服务端的信息实现(点对点,发布/订阅),JMS 消息系统 4
4.1. Pushlets 组件 5
4.2. Java Message Service 5
4.3. 逻辑架构 5
关键点 6
5. 解决方案总结 7
5.1. 云方案(推荐)::百度云?极光?个推? 7
5.2. socket。。需要Flash XMLSocket、Java Applet 等插件支持 7
5.3. mina自己socket实现 7
5.4. websocket html5 7
5.5. Comet4J 7
6. 工作模式浏览器支持情况 8
7. 参考 9
1. 俩中模式 Push/Pull
服务器推送(Server Push) 推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。 客户端拉曳(Client Pull) 在
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 需要实现的特性
功能特性
2.1. 推送消息广播。
2.2. 推送定向消息。
2.3. 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。
2.4. 消息缓存机制,确保长轮询工作模式下不丢失消息。
2.5. 客户端正常下线,服务端可立即感知。
2.6. 客户端异常停止工作,服务端可定时检查并感知。
2.7. 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。
3. 客户端实现::长轮询(简单轮询,长轮询,HTTP 流)、长连接、自动选择三种工作模式
3.1. HTTP 请求轮询
目前的 Web 应用是基于 HTTP 协议的,其规定了请求-响应的处理模型,位于应用层的单工通讯模式使得纯粹意义上的服务端推送方式变得难以实现。
为了基于 HTTP 协议进行“推送”实现,可由客户端发起 HTTP 请求轮询,服务端在请求后返回响应。
根据轮询时间、请求处理方式,分为以下三种推。
3.2. 简单轮询
客户端一般以定时方式发起请求,服务端处理后返回响应。
● 原理、客户端/服务端实现简单
● 可根据应用场景调整轮询时间间隔
● 服务端需要处理大量请求
3.3. 长轮询
客户端发起请求后服务端将该请求挂起(不返回响应),直到超时、异常或需要处理响应(推内容)才返回。客户端收到响应后再次请求(即轮询)服务端,并处理响应。
● 实时性高
● 服务端需要管理挂起请求
3.4. HTTP 流
客户端发起请求后服务器端处理请求,并通过 HTTP 流一直向客户端写入数据,直到超时或异常才返回响应。连接断开后客户端再次请求服务端,属于长轮询的一种。
4. 服务端的信息实现(点对点,发布/订阅),JMS 消息系统
消息是系统或组件间通讯的一种低耦合方式,是系统级异步架构的基础。
在 Web 消息推送中,服务端管理应用状态,当状态发生变迁时需要通知客户端,完成消息推送。
4.1. Pushlets 组件
4.2. Java Message Service
需要重点关注如下技术点:
消息域
● 点对点
只有一个客户端可以接收到消息。
● 发布/订阅
广播给订阅的客户端。可配置持久化订阅。
消息确认
● 会话本地事务提交时会对收到的消息进行确认,回滚时将重传所有消息
● 非本地事务确认:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNO、Session.DUPS_OK_ACKNOWLEDGE
4.3. 逻辑架构
JMS 消息系统为单独的通讯总线服务独立于应用系统,Pushlets 为应用系统中的一个组件。
消息表管理组件提供消息新增,以及对推送过的消息记录的查询、删除。
推时序
关键点
● 服务层消息处理
JMS 对于应用开发是透明的,应用只需调用封装好的发送接口,继承监听接口。发送时根据应用场景设置主题属性,监听处理时根据消息属性实现处理逻辑。
● 消息表管理
需要使用定时任务或手动触发清除历史消息。
● Pushlets 配置,License 问题:Pushlets 是以 LGPL 开源的,对于商业项目使用时必须进行封装:《基于 Pushlets 的消息推送设计》。
5. 解决方案总结
5.1. 云方案(推荐)::百度云?极光?个推?
作为Android开发人员,在做应用开发时我们常常会碰到消息推送,因为Android不像苹果,本身没有消息推送机制,通常采用的是基于XMPP协议 的推送,但这种开发很麻烦,因此在市场上应运而生了一种封装好的推送方式:极光推送,它的出现大大节省了开发时间,极光推送一度占领移动开发的市场,但是 最近,百度推出了新的推送方式:百度云推送,在市场的反应也相当不错,作为开发者,有时候不知道选择哪一种方式的推送合适,下面就将详细介绍下这两者的区 别和优势,希望你能从中找到答案。
5.2. socket。。需要Flash XMLSocket、Java Applet 等插件支持
可以使用套接字接口进行全双工通讯。可以通过 Flash XMLSocket、Java Applet 技术实现。
但由于实现方案与厂商技术绑定过紧,不属于 Web 标准化范畴,并且存在一些限制(通讯端口开启安全、客户端插件),这里不进行描述。
5.3. mina自己socket实现
5.4. websocket html5
5.5. Comet4J
是一个微型的即时推送框架,它分为服务端 与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到 页面,那么你的应用就具备了向客户端推送信息的能力,而你仅需要在服务器端调用Comet4J所提供发送方法,信息就会被主动的推送到客户的浏览器上。
omet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式
6. 工作模式浏览器支持情况
支持XMLHTTPRequest对象的浏览器均可支持长轮询工作模式,但不一定能够支持长连接。
浏览器/平台 |
版本 |
长轮询 |
长连接 |
Internet Explorer |
6,7,8,9 |
√ |
X |
FireFox |
3.0+(更底版本未知) |
√ |
√ |
Chrome |
7.0+(更底版本未知) |
√ |
√ |
Safari |
5+(更底版本未知) |
√ |
√ |
Opera |
11.10+(更底版本未知) |
√ |
X |
Air |
1.5+(更底版本未知) |
√ |
√ |
IOS(Iphone/Ipad) |
3.1+(更底版本未知) |
√ |
√ |
Android |
未测试 |
未知 |
未知 |
BlackBerry |
未测试 |
未知 |
未知 |
7. 参考
comet4j java服务端推送消息到web页面实例 - shadowsick的专栏 - 博客频道 - CSDN.NET.htm
消息推送机制技术设计_百度文库.htm
百度云?极光?个推? - 51CTO.COM.htm
atitit.web 推送实现方案集合相关推荐
- .atitit.web 推送实现解决方式集合(3)----dwr3 Reverse Ajax
.atitit.web 推送实现解决方式集合(3)----dwr3 Reverse Ajax 1. 原理实现 1 2. Page 添加配置.添加回调函数dwr.engine.setActiveRev ...
- firebase推送_Firebase Web推送通知
firebase推送 This article will help you implement firebase web push notifications without using any pa ...
- 【PWA】web推送技术
伴随着今年 Google I/O 大会的召开,一个很火的概念–Progressive Web Apps 诞生了.这代表着我们 web 端有了和原生 APP 媲美的能力.但是,有一个很重要的痛点,web ...
- IM推送保障及网络优化详解(二):如何做长连接加推送组合方案
对于移动APP来说,IM功能正变得越来越重要,它能够创建起人与人之间的连接.社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性. 在复杂的 Android 生态环境下,多种因素都会造成消息推送 ...
- JavaScript是如何工作的:Web推送通知的机制
这是专门探索 JavaScript 及其所构建的组件的系列文章的第9篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript是如何工作的:引擎,运行时和调用堆栈的概述! JavaScr ...
- Android推送集成方案总结
Android推送集成方案总结 刚做完推送集成方案,记录下坑. 这里记录的特性和使用时针对写blog时采用的sdk的,具体使用流程和限制还请参考官方给出的sdk. 1.推送规则 小米手机用小米推送: ...
- 如何使用 PHP 发送 Web 推送通知
Web Push API 允许您向 Web 浏览器和 API 发送推送通知.虽然大部分逻辑发生在浏览器中,但您仍然需要一个服务器端组件来生成通知.以下是使用 PHP 实现 Web 推送后端的方法. 先 ...
- JavaScript是如何工作的: Web推送通知的机制
摘要: 如何在Web端推送消息? 原文:JavaScript是如何工作的: Web推送通知的机制 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 JavaScript 及 ...
- 7种 实现web实时消息推送的方案
我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是 ...
- 我有 7种 实现web实时消息推送的方案,7种!
技术交流,公众号:程序员小富 大家好,我是小富- 我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里 ...
最新文章
- CentOS下MySQL的彻底卸载
- Integer类源码浅析
- python2.7中文有限制么_python2.7
- Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件
- 用Entlib的配置程序块遇到的问题
- Python网络编程之socketserver实现多并发
- itext poi 学习之旅 (3)读取数据库信息并由excel展现出来
- nvm 下载node 下载不下来_音乐下载 黄子韬爸妈可以不走吗
- Openssl建立CA系统
- 自学的程序员如何找到好工作?
- wts文件生成engine文件的方法
- 高项47个过程及输入、输出、工具解释
- 软件集成测试采用,集成测试的组成以及流程
- Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
- excel查重技巧:如何用组合函数快速统计重复数据(下)
- Python 保留小数位
- Android4.1 如何实现状态栏上信号图标有SIM卡1,2标记,并且当处于2G状态显示“G”,处于3G状态显示“3G”
- STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)
- IT外企那点儿事(20): 程序员的大侠情结
- 使用itext将base64转成图片合并为pdf