一种基于websocket的消息发送的方法技术

技术编号:37856203 阅读:10 留言:0更新日期:2023-06-14 22:50
本发明专利技术属于通信领域,特别涉及到了一种基于websocket的消息发送的方法,该方法包括有步骤1、步骤2;步骤2具体包括有以下步骤:步骤2.1,服务端向客户端发送大数据获取接口地址,客户端收到接口地址后进行保存;步骤2.2,设置有消息体数据大小的阈值,服务端向客户端推送消息时,超过阈值则将该消息的消息体数据保存并生成消息体唯一编号,同时将该消息体唯一编号推送给客户端;步骤2.3,客户端收到服务器推送的消息后,判断该消息,如果为大数据量的消息体则通过消息体唯一编号从大数据获取接口地址取得消息体完整数据。在本发明专利技术中,可以有效地解决websocket连接的阻塞的问题,提高消息推送的稳定性。息推送的稳定性。息推送的稳定性。

【技术实现步骤摘要】
一种基于websocket的消息发送的方法


[0001]本专利技术属于通信领域,特别涉及到了一种消息发送的方法。

技术介绍

[0002]在传统的b/s架构中,客户端和服务器之间的通信主要是单向的,由客户端发起请求,但实际场景(如聊天、游戏等)中经常需要客户端和服务器进行双向实时通信,目前主要有两种处理方式:一种是客户端通过轮询来持续请求服务器以得到最新的消息数据;另一种则是通过websocket连接的方式实现双向通信。
[0003]通过轮询的方式,会产生大量的无效请求,增加网络带宽负载以及服务器压力;websocket连接的方式能解决轮询产生的无效请求问题,但其在服务端有大的消息体推送时可能会阻塞后续的消息推送:http1.X中页面包含体积较大的资源内容(如js、css、图片等)会阻塞后边的资源加载,http2.0以资源分包的形式解决了http1.X中的页面资源阻塞问题,但在tcp连接层面的资源阻塞并未得到解决。

技术实现思路

[0004]为了解决上述问题,本专利技术的目的在于提供一种基于websocket的消息发送的方法,该方法解决websocket连接的阻塞的问题,提高消息推送的稳定性。
[0005]为了实现上述目的,本专利技术的技术方案如下。
[0006]一种基于websocket的消息发送的方法,该方法包括有以下步骤:
[0007]步骤1,客户端和服务端通过websocket进行连接;
[0008]步骤2,服务端发送消息给客户端;
[0009]其特征在于,步骤2具体包括有以下步骤:
[0010]步骤2.1,服务端向客户端发送大数据获取接口地址,客户端收到接口地址后进行保存;
[0011]步骤2.2,设置有消息体数据大小的阈值,超过阈值消息体则为大数据量的消息体,服务端向客户端推送消息时,超过阈值则将该消息的消息体数据保存并生成消息体唯一编号,同时将该消息的消息体唯一编号及消息体数据类型通过websocket连接推送给客户端;未超过阈值的该消息的消息体数据及消息体数据类型直接通过websocket连接推送给客户端;
[0012]步骤2.3,客户端收到服务器推送的消息后,判断该消息是否为大数据量的消息体,如果为大数据量的消息体则通过消息体唯一编号从大数据获取接口地址取得消息体完整数据,收到其他正常消息则直接做业务处理。
[0013]通过上述步骤2的设置,在进行大数据量的消息体的推送时,可以有效地解决websocket连接的阻塞的问题,提高消息推送的稳定性。
[0014]进一步的,在步骤1中,具体包括有以下步骤:
[0015]步骤1.1,客户端生成有唯一标识,服务端获取客户端的唯一标识,并判断客户端
标识池中是否存在有该唯一标识,存在进入步骤1.2,不存在进入步骤1.3;
[0016]步骤1.2,返回错误提示信息;
[0017]步骤1.3,将获取到的唯一标识做加密处理生成连接标识,将唯一标识注册到客户端标识池中,并将连接标识返回给客户端;
[0018]步骤1.4,客户端收到服务端返回的连接标识后,通过该连接标识建立到服务端的websocket连接;以让客户端和服务端通过websocket进行连接。
[0019]进一步的,在步骤1.4中,客户端和服务端通过websocket进行连接时,判断客户端是否身份不明,客户端身份不明拒绝本次连接请求。
[0020]进一步的,在步骤1.4中,客户端和服务端通过websocket进行连接时,判断客户端是否已经与服务端连接,客户端已经与服务端连接则拒绝本次连接请求。
[0021]进一步的,在步骤1.4中,客户端和服务端通过websocket进行连接时,具体包括有以下步骤:
[0022]步骤1.41,服务端收到websocket连接请求后,将连接标识解密出唯一标识,验证客户端提供的连接标识对应的唯一标识是否存在于客户端标识池中,不存在则拒绝本次连接请求;存在则进入步骤1.42;
[0023]步骤1.42,存在有用于注册已连接的客户端的连接标识的客户端连接池,判断此连接标识是否已在客户端连接池中,如果已在客户端连接池中,则拒绝本次连接请求;如连接标识在客户端连接池中不存在则将该连接标识加入到客户端连接池中,并服务端和客户端成功连接。
[0024]进一步的,该方法还包括有步骤3:服务端在客户端连接断开或长时间无响应后则将该连接标识以及其对应的唯一标识分别从客户端连接池和客户端标识池中移除。
[0025]进一步的,服务端为多websocket服务器组成的websocket服务集群,并做负载均衡。
[0026]进一步的,websocket服务集群收到客户端的连接请求时,通过负载均衡分配具体的响应websocket服务器,由该websocket服务器来处理客户端请求,连接成功后将该websocket服务器地址也对应写入客户端连接池中。
[0027]进一步的,一对一消息发送时从客户端连接池中取得接收连接标识以及对应的websocket服务器地址,通过找到的websocket服务器地址向对应的客户端连接发送消息。
[0028]进一步的,客户端属于某个群组时则在连接后将客户端标识加入到对应的群组中,发送消息时先从群组中取得群组中所有的客户端标识,后续步骤同一对一消息发送。
[0029]在本专利技术中,通过上述步骤2的设置,在进行大数据量的消息体的推送时,可以有效地解决websocket连接的阻塞的问题,提高消息推送的稳定性。
附图说明
[0030]图1是本专利技术的流程图。
[0031]图2是本专利技术的websocket服务集群结构图。
[0032]图3是本专利技术的一对一的消息发送流程图。
具体实施方式
[0033]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0034]本实施例提供一种基于websocket的消息发送的方法;websocket因其支持长连接、双向通信的优势,能很好的解决了传统http请求在实时交互场景下应用困难的问题,但是websocket也有其缺点,为降低对业务应用上的影响,本方法主要为解决websocket连接的阻塞及多连接的问题,提高消息推送的稳定性以及增加对客户端连接的限制机制。具体的,本方法主要包括以下步骤:
[0035]参见图1,客户端生成主机唯一标识,标识生成方式由服务端提供,可通过activeX、专有程序、localstorage、js引用等方式来实现,通过浏览器、网卡MAC等计算得出,相同电脑生成的标识总是相同的;
[0036]客户端主动发起调用服务端提供的标识获取接口方法(标识接口方法的访问授权方式可采用token等常用方式,此处不再详述),并将主机唯一标识一并发送;
[0037]服务端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于websocket的消息发送的方法,该方法包括有以下步骤:步骤1,客户端和服务端通过websocket进行连接;步骤2,服务端发送消息给客户端;其特征在于,步骤2具体包括有以下步骤:步骤2.1,服务端向客户端发送大数据获取接口地址,客户端收到接口地址后进行保存;步骤2.2,设置有消息体数据大小的阈值,超过阈值消息体则为大数据量的消息体,服务端向客户端推送消息时,超过阈值则将该消息的消息体数据保存并生成消息体唯一编号,同时将该消息的消息体唯一编号及消息体数据类型通过websocket连接推送给客户端;未超过阈值的该消息的消息体数据及消息体数据类型直接通过websocket连接推送给客户端;步骤2.3,客户端收到服务器推送的消息后,判断该消息是否为大数据量的消息体,如果为大数据量的消息体则通过消息体唯一编号从大数据获取接口地址取得消息体完整数据,收到其他正常消息则直接做业务处理。2.根据权利要求1所述的一种基于websocket的消息发送的方法,其特征在于,在步骤1中,具体包括有以下步骤:步骤1.1,客户端生成有唯一标识,服务端获取客户端的唯一标识,并判断客户端标识池中是否存在有该唯一标识,存在则进入步骤1.2,不存在则进入步骤1.3;步骤1.2,返回错误提示信息;步骤1.3,将获取到的唯一标识做加密处理生成连接标识,将唯一标识注册到客户端标识池中,并将连接标识返回给客户端;步骤1.4,客户端收到服务端返回的连接标识后,通过该连接标识建立到服务端的websocket连接;以让客户端和服务端通过websocket进行连接。3.根据权利要求2所述的一种基于websocket的消息发送的方法,其特征在于,在步骤1.4中,客户端和服务端通过websocket进行连接时,判断客户端是否身份不明,客户端身份不明则拒绝本次连接请求。4.根据权利要求3所述的一种基于websocket的消息发送的方法,其特征在于,在步骤1.4中,客户端和服务端通过websocket进行连接时,判断客户端是否已经与服务端连接,客户端...

【专利技术属性】
技术研发人员:张清明
申请(专利权)人:信通院车联网创新中心成都有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1