服务器的消息推送方法和装置的制造方法

文档序号:9649087阅读:392来源:国知局
服务器的消息推送方法和装置的制造方法
【技术领域】
[0001] 本发明设及计算机领域,具体来说,设及一种服务器的消息推送方法和装置。
【背景技术】
[0002] 在企业级的系统中,尤其是需要实现服务器后台数据不断同步到客户端的监控W 及即时事件消息的云计算系统的开发中,在BS的架构下,怎样能够让后台数据高效即时稳 定的推送到前端页面一直是一个难题,尤其是能够支持信息的离线获取推送。运里需要考 虑两个方面的问题,一个是消息源的获得,另外一个是消息的高效即时推送。
[0003] 在过去的服务器推送技术发展中,使用ajax短轮询及长轮询的方式最为常见,它 们都是通过基于原始的ht化请求服务器间歇性地获取数据,从某种意义上讲属于服务器 拉取的方式,即客户端主动向服务器发送获取数据的请求,而不是服务器端。短轮询方式是 每次请求后立即返回,但长轮询是请求后不会立即返回而是将请求挂起直到服务器端有数 据后才返回到客户端。
[0004] 在另一方面,如何实现消息的离线推送也是一个在过去的解决方案中不能很好解 决的问题,运里需要解决服务器已经推送到前端但是前端还未及时呈现的消息怎样才能够 再次呈现出来,而且能够对于不同页面的切换实现页面式的信息推送。现有技术大多采用 的是服务器级别的session存储或者是本地cookie存储,而在本系统设计中本发明采用的 是WebStorage技术。 阳0化]对于采用ajax短轮询技术来说,需要从客户端定时的向服务器端发送请求,实现 定时刷新的效果,但是由于运种方式不能准确的知晓服务器端是否真的有消息需要推送而 浪费了大量请求,而又由于每次请求都需要经历一个基本的ht化连接建立、请求发送、响 应返回、连接断开的过程,使得客户端和服务器端的负载开销都会增大,服务器消息推送的 效率会明显低下。而采用长轮询的方式,虽然减少了无效请求的次数,但是在服务器端有大 量消息进行推送的情况下,依然和短轮询一样会加大服务器和客户端的负载,极大可能出 现页面卡死或者无响应的情况,降低了用户体验效果。
[0006] 在信息的离线存储方面,采用服务器级别的session存储太依赖于服务器后台环 境,因为它是在服务器端进行编译后响应到客户端并存储在客户端浏览器中的,一旦后台 环境发生改变,实现方式也都需要进行重构。无法做到离线环境的解禪。显然采用服务器 级别的存储会存在运样的弊端,那么就要考虑浏览器客户端级别的存储,运个目前采用最 多的解决方式就是利用浏览器cookie,但是cookie方式也存在W下两大问题:数据大小: 作为存储容器,cookie的大小限制在4邸左右,对于现在复杂的业务逻辑需求和大容量的 信息存储已经无法满足;网络负担:cookie会被附加在每个HTTP请求中,在化化Request 和化化Response的header中都是要被传输的,运对于只为了实现消息的离线存储是没有 意义的且增加了大量的网络负担。
[0007] 针对相关技术中的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0008] 针对相关技术中的上述问题,本发明提出一种服务器的消息推送方法和装置,能 够提高服务器端的消息推送效率,提升用户体验感。
[0009] 本发明的技术方案是运样实现的:
[0010] 根据本发明的一个方面,提供了一种服务器的消息推送方法。
[0011] 该消息推送方法包括:
[0012] 接收客户端的Websocket连接请求,根据Websocket连接请求在服务器端建立与 客户端的Websocket连接;
[0013] 服务器端基于Websocket连接发送页面消息;
[0014] 其中,服务器端处建立的Websocket连接与消息中间件整合在一起。
[0015] 此外,该消息推送方法进一步包括:
[0016] 在建立Websocket连接后,将客户端的当前用户ID与Websocket连接绑定;
[0017] 将该Websocket连接存储至对应当前用户ID的第一连接集合中。 阳018] 可选的,该消息推送方法进一步包括:
[0019] 建立对Websocket连接的监听连接;
[0020] 将监听连接存储至第一连接集合中。
[0021] 另外,该消息推送方法还包括:
[0022] 在建立Websocket连接后,判断客户端的当前用户是否创建与客户端的当前用户 ID关联的MQ连接;
[0023] 如果没有创建MQ连接,则从MQ连接池中获取一个新的MQ连接并存储至第一连接 集合中。
[0024] 此外,该消息推送方法进一步包括:
[00巧]在断开客户端与服务器端的Websocket连接时,将该Websocket连接从第一连接 集合中移除;
[0026] 判断该Websocket连接是否是客户端的用户ID下的最后一个Websocket连接;
[0027] 在判断为是的情况下,将对应该用户ID的MQ连接回收至MQ连接池,并将该MQ连 接从第一连接集合中移除。
[0028] 另外,该消息推送方法进一步包括:
[0029] 在客户端监听到来自服务器端的推送消息的情况下,检测用户的当前页面所在的 业务模块;
[0030] 检测推送消息所属于的业务模块;
[0031] 在判断用户的当前页面所在的业务模块与推送消息所属于的业务模块相同的情 况下,将推送消息推送至当前页面;
[0032] 在判断用户的当前页面所在的业务模块与推送消息所属于的业务模块不同的情 况下,将推送消息进行离线存储。
[0033] 另外,该消息推送方法进一步包括:
[0034] 在客户端进入一个新的页面的情况下,确定新的页面的业务模块;
[0035] 检测离线存储的推送消息中是否存在对应业务模块的推送消息;
[0036] 如果存在对应业务模块的推送消息,则将该推送消息推送至新的页面,并将该推 送消息从离线存储中删除。
[0037] 其中,位于客户端的浏览器端的原生的Websocket接口预先经过二次封装。
[0038] 此外,客户端的浏览器端的Websocket连接为单例模式。
[0039] 根据本发明的另一方面,提供了一种服务器的消息推送装置。
[0040] 该消息推送装置包括: 阳041] 接收建立模块,用于接收客户端的Websocket连接请求,根据Websocket连接请求 在服务器端建立与客户端的Websocket连接;
[0042] 发送模块,用于基于Websocket连接发送页面消息;
[0043] 其中,服务器端处建立的Websocket连接与消息中间件整合在一起。
[0044] 本发明通过在服务器端将Websocket连接进行统一管理和分配,并将其与消息中 间件整合在一起,能够提高服务器端的消息推送效率,提升用户体验感。
【附图说明】 W45] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据运些附图获 得其他的附图。
[0046] 图1是根据本发明实施例的服务器的消息推送方法的流程图;
[0047] 图2是根据本发明实施例的Websocket时序图; W48] 图3是根据本发明实施例的创建Websocket连接和MQ连接的流程图; W例图4是根据本发明实施例的断开Websocket连接和MQ连接的流程图;
[0050]图5是根据本发明实施例的推送消息的存储策略流程图;
[0051] 图6是根据本发明实施例的离线消息的推送策略流程图;
[0052] 图7是根据本发明实施例的服务器的消息推送框架的示意图;
[0053] 图8是根据本发明实施例的服务器的消息推送装置的框图。
【具体实施方式】
[
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1