[发明专利]一种基于Web的实时消息定向推送方法有效
申请号: | 201510685502.7 | 申请日: | 2015-10-20 |
公开(公告)号: | CN105357286B | 公开(公告)日: | 2019-02-05 |
发明(设计)人: | 崔越;白正;周一航;步红;钟原;蒋春娟 | 申请(专利权)人: | 中国电子科技集团公司第二十八研究所 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/58 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 胡建华 |
地址: | 210007 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于Web的实时消息定向推送方法,包括步骤如下:步骤1,在服务器端建立一套消息注册订阅机制。主要包含消息接收模块、消息分发模块以及消息处理模块。步骤2,浏览器端发送请求到服务器端注册并订阅所需要的消息类型。步骤3,服务器端定向推送消息至浏览器端。本发明采用基于Web的实时消息定向推送方法,不仅能够满足多用户并发场景下的实时数据定向推送需求,而且能够有效地提高服务器、网络带宽等资源的利用率。在浏览器端做到无刷新,不闪屏的良好用户体验。具有部署简便、支持多用户场景、用户体验好等优点。 | ||
搜索关键词: | 一种 基于 web 实时 消息 定向 推送 方法 | ||
【主权项】:
1.一种基于Web的实时消息定向推送方法,其特征在于,包括以下步骤:步骤1,在服务器端建立一套消息注册订阅机制,包含消息接收模块、消息分发模块以及消息处理模块;步骤2,浏览器端发送请求到服务器端注册并订阅所需要的消息类型;步骤3,服务器端定向推送消息至浏览器端;所述消息接收模块,包括一张静态哈希表,用于储存消息ID与消息类的映射;消息接收模块接收从服务器其他组件模块发送来的二进制消息,根据消息ID以及Java反射机制将二进制流转换成Java消息对象并调用消息分发模块;所述消息分发模块,包括静态哈希表T1和静态哈希表T2,静态哈希表T1用于存储线程ID与其对应公共缓存区、线程锁数据的映射,静态哈希表T2存储了消息类型与订阅此类消息的线程ID的映射;消息分发模块将接收到的消息根据类型的不同,从静态哈希表T2获取到订阅此消息的所有线程ID,再根据线程ID从静态哈希表T1获取线程消息缓存,将消息存入到所有订阅此类消息的线程公共缓存区内,并通过线程锁唤醒线程来接收并处理公共缓存区中的消息;所述消息处理模块用于将消息对象进行二次缓存用以消息的优化处理并调用消息;步骤2包括:步骤21,浏览器端发送Ajax请求至服务器端,请求线程开始等待;步骤22,服务器端收到消息后经过消息处理模块处理,唤醒线程读取公共缓存区;步骤22包括:服务器判断请求参数是否含有线程ID,如果不含线程ID,则生成新的线程ID,分配公共缓存区、线程锁,使用此线程ID在消息分发模块注册并订阅相应类型的消息;服务器根据线程ID查看公共缓存区是否已有缓存消息,如果有,则直接进入步骤3,否则继续;服务器利用Java线程机制等待线程锁,直到消息接收模块收到新的消息并调用消息分发模块唤醒此线程;步骤3包括:步骤31,线程被唤醒后从公共缓存区读取消息,处理消息并将其放入私有缓存区;步骤32,等待一段时间后再次从公共缓存区读取消息,如果有新消息则继续处理新消息并将其放入私有缓存区;步骤33,重复步骤32直到累积到没有新消息,将私有缓存区的消息推送至浏览器端;步骤34,浏览器收到数据后进行处理,处理完成后重新发送Ajax请求至服务器继续订阅消息;步骤3之后,如果需要卸载页面,发送Ajax请求清空对应的公共及私有缓存区。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第二十八研究所,未经中国电子科技集团公司第二十八研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510685502.7/,转载请声明来源钻瓜专利网。