消息推送技术消息推送技术消息推送Web层消息推送套接字HTTP请求轮询简单轮询长轮询HTTP流HTML5WebSocket多客户端支持APIs多样网络连接不稳定最小化流量服务层消息服务JavaMessageService消息域消息确认技术设计目标Web层设计Pushlets组件JS客户端服务层设计处理步骤消息表逻辑架构推时序关键点参考消息推送消息推送是针对Web应用开发领域的技术,指服务端以主动方式将信息送达客户端
主要用于提升用户体验,避免用户刷新页面从服务端拉取数据
例如Web邮件中自动出现刚收到的邮件项,Web即时通讯自动提示新到消息等应用场景
要实现消息推送机制,涉及两方面的内容:●Web层消息推送●服务层消息服务Web层消息推送套接字可以使用套接字接口进行全双工通讯
可以通过FlashXMLSocket、JavaApplet技术实现
但由于实现方案与厂商技术绑定过紧,不属于Web标准化范畴,并且存在一些限制(通讯端口开启安全、客户端插件),这里不进行描述
HTTP请求轮询目前的Web应用是基于HTTP协议的,其规定了请求-响应的处理模型,位于应用层的单工通讯模式使得纯粹意义上的服务端推送方式变得难以实现
为了基于HTTP“”协议进行推送实现,可由客户端发起HTTP请求轮询,服务端在请求后返回响应
根据轮询时间、请求处理方式,分为以下三种推
简单轮询客户端一般以定时方式发起请求,服务端处理后返回响应
●原理、客户端/服务端实现简单●可根据应用场景调整轮询时间间隔●服务端需要处理大量请求长轮询客户端发起请求后服务端将该请求挂起(不返回响应),直到超时、异常或需要处理响应(推内容)才返回
客户端收到响应后再次请求(即轮询)服务端,并处理响应
●实时性高●服务端需要管理挂起请求HTTP流客户端发起请求后服务器端处理请求,并通过HTTP流一直向客户端写入数据,直到超时或异常