掌桥专利:专业的专利平台
掌桥专利
首页

一种通信方式的实现方法、服务器以及客户端

文献发布时间:2023-06-19 10:55:46


一种通信方式的实现方法、服务器以及客户端

技术领域

本发明涉及数据通信技术领域,特别涉及一种通信方式的实现方法、服务器以及客户端。

背景技术

现在网络通信通常采用TCP协议传输或者UDP协议传输。TCP传输通常用于需要可靠的传输服务,提供拥塞控制、差错控制和流量控制,UDP传输不需要建立连接,不提供流量控制、数据应答和状态维护,最大的优势就是快,不保证数据的正确性和顺序,常用于视频或者语音功能。基于TCP协议,在协议层有TCP心跳机制,也可以在TCP协议之上的应用层建立TCP应用心跳机制;基于无连接的UDP协议,在协议层无心跳机制,但可以基于UDP协议之上的应用层建立UDP应用心跳机制。

在TCP协议之上,应用层协议有HTTP(超文本传输协议)、HTTPS(超文本传输安全协议)、FTP(文件传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。HTTP或者HTTPS是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网的数据通信的基础,得到广泛地应用。

HTTP或者HTTPS协议是一种单向通信方式,连接建立的过程是单向的,只能由客户端发起连接请求,连接建立后,数据传输的发起也是单向的,只能由客户端发起数据传输请求,服务器再返回相应的信息。因此很多网站为了实现服务器端信息实时推送,通常采用轮询的技术:在特定的时间间隔,由客户端对服务器发出HTTP或者HTTPS请求,然后由服务器返回最新的数据给客户端。这种模式下,客户端需要不断地向服务器发出请求,然而HTTP或者HTTPS请求包含较长的头部,其中真正有效的数据只是很小的一部分,显然这样会浪费很多的带宽等资源。

WebSocket的出现解决了这个问题,WebSocket协议同HTTP或者HTTPS协议一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的,通过WebSocket协议,客户端和服务器只需要完成一次握手,然后单独建立一条TCP的通信通道进行数据的传送,两者之间就可以直接创建持久性的连接,它使得客户端和服务器之间的数据交换变得更加简单,允许服务器主动向客户端推送数据,并进行双向数据传输。WebSocket连接建立过程的发起方是双向的,可以由客户端发起,也可以由服务器发起;WebSocket连接建立后,数据的主动传输也是双向的,可以由客户端主动向服务器发起数据传输请求,也可以由服务器主动向客户端发起数据传输请求。

HTTP或者HTTPS连接一般用于客户端与服务器端进行短连接操作,即传输完数据后立刻中断连接,以节省客户端与服务器的CPU、内存及网络等资源的使用;同时,HTTP或者HTTPS连接,也可以采用长连接方式,即在一次数据传输完成后,仍然通过心跳机制保持连接状态,在下一次数据传输重复使用本次连接。WebSocket连接,由于在建立连接过程中以及使用过程中需要的服务器和客户端的资源较大,所以在实际应用中一般采用长连接的方式。HTTP或者HTTPS连接使用的客户端与服务器的CPU和内存资源较少,所需要的网络带宽资源也较小;WebSocket连接使用的客户端与服务器的CPU和内存资源较大。在实际应用中,一台服务器采用HTTP或者HTTPS连接可以同时连接几千台或者几万台客户端,经过一些特殊优化后,甚至可以同时连接几十万台客户端;而采用WebSocket连接一般只能连接上千台客户端。

基于HTTP或者HTTPS协议的通信方式已经形成了一个稳定的编程模型和部署模型,得到了广泛应用,有大量的软件系统是基于此套编程模型和部署模型的基础上开发的;但在这个模式下难以实现服务器主动发送消息给客户端,所以为了实现服务器能够主动发送消息给客户端,现有一般采用服务器和客户端之间基于一套新的RPC(远程过程调用)模式的开发模型实现WebSocket的通信方式,但是现有实现的WebSocket通信方式使用的内存资源较大,且需要再服务器端与客户端都设置网络监听端口。在每台客户端上都设置网络监听端口,且需要在网络通道上的防火墙、路由器、VPN等设备上都配置对应的信息,这种配置过程非常繁琐且容易出错,同时也增大了网络非法访问的攻击面。

发明内容

本发明所要解决的技术问题是:提供一种通信方式的实现方法、服务器以及客户端,能够提高传输效率,减少资源消耗。

为了解决上述技术问题,本发明采用的技术方案为:

一种通信方式的实现方法,包括步骤:

与客户端建立HTTP或者HTTPS连接;

通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求;

接收所述客户端基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接发送的WebSocket连接建立请求;

根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种服务器,包括第一存储器、第一处理器及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现上述通信方式的实现方法中的各个步骤。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种通信方式的实现方法,包括步骤:

与服务器建立HTTP或者HTTPS连接;

接收所述服务器通过所述HTTP或者HTTPS连接发送的连接升级请求;

基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接向所述服务器发送WebSocket连接建立请求。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种客户端,包括第二存储器、第二处理器及存储在所述第二存储器上并可在所述第二处理器上运行的第二计算机程序,其特征在于,所述第二处理器执行所述第二计算机程序时实现上述通信方式的实现方法中的各个步骤。

本发明的有益效果在于:先与客户端建立HTTP或者HTTPS连接,当需要建立WebSocket连接时通过HTTP或者HTTPS连接向客户端发送连接升级请求,并接受客户端通过HTTP或者HTTPS发送的WebSocket连接建立请求,因此能够按需动态地根据WebSocket连接建立请求将HTTP或者HTTPS连接升级为WebSocket连接,利用HTTP或者HTTPS的成熟开发框架和资源来建立WebSocket连接,能够延续传统的HTTP或者HTTPS的有效部署方式和开发方式,不必再引入全新的WebSocket的开发模式和部署模式,从而简化开发步骤,节省资源;并且能够实现HTTP或者HTTPS连接和WebSocket连接的自由切换,根据实际情况选择连接方式,提高传输效率以及通信连接的灵活性。同时,采用本发明的通信方式,只需要在服务器端设置一个网络监听端口即可,不需要在客户端设置网络监听端口,可以避免网络防火墙、路由器和VPN的设置工作,同时缩小了网络非法访问的攻击面。

附图说明

图1为本发明实施例提供的一种通信方式的实现方法的流程图;

图2为本发明实施例的一种通信方式的实现终端的示意图;

图3为本发明实施例提供的一种通信方式的实现方法的流程图;

图4为本发明实施例的一种通信方式的实现终端的示意图;

图5为本发明实施例提供的一种通信方式的通过HTTP或者HTTPS心跳信息新建HTTP或者HTTPS单向连接方法的流程图;

图6为本发明实施例提供的一种通信方式的通过HTTP或者HTTPS心跳信息新建双向WebSocket连接方法的流程图;

图7为本发明实施例提供的一种通信方式的单向HTTP或者HTTPS连接通过心跳信息升级为双向WebSocket连接方法的流程图;

图8为本发明实施例提供的一种通信方式的单向HTTP或者HTTPS连接通过HTTP或者HTTPS连接传输控制指令升级为双向WebSocket连接方法的流程图;

图9为本发明实施例提供的一种通信方式的通过WebSocket连接传输控制指令新建单向HTTP或者HTTPS连接方法的流程图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1,本发明实施例提供了一种通信方式的实现方法,包括步骤:

与客户端建立HTTP或者HTTPS连接;

通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求;

接收所述客户端基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接发送的WebSocket连接建立请求;

根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接。

从上述描述可知,本发明的有益效果在于:先与客户端建立HTTP或者HTTPS连接,当需要建立WebSocket连接时通过HTTP或者HTTPS连接向客户端发送连接升级请求,并接受客户端通过HTTP或者HTTPS发送的WebSocket连接建立请求,因此能够按需动态地根据WebSocket连接建立请求将HTTP或者HTTPS连接升级为WebSocket连接,利用HTTP或者HTTPS的成熟开发框架和资源来建立WebSocket连接,能够延续传统的HTTP或者HTTPS的有效部署方式和开发方式,不必再引入全新的WebSocket的开发模式和部署模式,从而简化开发步骤,节省资源;并且能够实现HTTP或者HTTPS连接和WebSocket连接的自由切换,根据实际情况选择连接方式,提高传输效率以及通信连接的灵活性。同时,采用本发明的通信方式,只需要在服务器端设置一个网络监听端口即可,不需要在客户端设置网络监听端口,可以避免网络防火墙、路由器和VPN的设置工作,同时缩小了网络非法访问的攻击面。

进一步地,所述通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求包括:

接收所述客户端通过所述HTTP或者HTTPS连接发送的心跳信息;

通过所述HTTP或者HTTPS连接向所述客户端发送针对所述心跳信息的应答信息,所述应答信息中携带所述连接升级请求;

或者,接收所述客户端通过所述HTTP或者HTTPS连接发送的数据上传指令;

通过所述HTTP或者HTTPS连接向所述客户端发送针对所述数据上传指令的数据回传指令,所述数据回传指令中携带所述连接升级请求。

由上述描述可知,接收客户端通过HTTP或者HTTPS连接发送的心跳信息,通过HTTP或者HTTPS发送针对心跳信息的应答信息,因此根据HTTP或者HTTPS连接即可直接通过心跳数据的传输向客户端发送连接升级请求,能够便利且灵活地建立WebSocket连接;或者接收客户端通过HTTP或者HTTPS连接发送的数据上传指令,通过HTTP或者HTTPS发送针对数据上传指令的数据回传指令,因此只需在应答心跳信息或者回传数据指令的时候携带连接升级请求,不需要单独发送升级请求,能够减少信息发送量,并提高请求效率。

进一步地,所述根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接之后还包括步骤:

通过所述WebSocket连接向所述客户端发送新建HTTP或者HTTPS连接建立请求;

接收所述客户端基于接收到的所述新建HTTP或者HTTPS连接请求通过所述WebSocket连接发送的HTTP或者HTTPS连接建立请求;

根据所述HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接;

或者,接收所述客户端通过所述WebSocket连接发送的HTTP或者HTTPS连接建立请求;

根据所述HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接。

由上述描述可知,当需要建立HTTP或者HTTPS连接时,能够通过WebSocket连接传输HTTP或者HTTPS连接建立请求,并根据HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接,以适应不同数据量传输的需求;或者,直接通过客户端发送的HTTP或者HTTPS连接建立请求,根据HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接,方便灵活地进行传输方式的切换,从而提高执行效率。

进一步地,所述根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接之后还包括步骤:

当无数据传输时或者所述HTTP或者HTTPS连接闲置时间超过预设时间时,向所述客户端发送中断所述HTTP或者HTTPS连接的请求,或者接收所述客户端发送的中断所述HTTP或者HTTPS连接的请求;

或者,当无数据传输时或者所述WebSocket连接闲置时间超过预设时间时,向所述客户端发送中断所述WebSocket连接的请求,或者接收所述客户端发送的中断所述WebSocket连接的请求。

由上述描述可知,HTTP或者HTTPS连接主动发生中断的情形有HTTP或者HTTPS连接闲置时间超过预设时间或者接收客户端发送的中断HTTP或者HTTPS连接的请求;WebSocket连接主动发生中断的情形有WebSocket连接闲置时间超过预设时间或者接收客户端发送的中断WebSocket连接的请求,因此能够根据实际情况及时中断无数据传输的HTTP或者HTTPS或者WebSocket连接请求和需要中断的HTTP或者HTTPS或者WebSocket连接请求。

请参照图2,本发明另一实施例提供了一种服务器,包括第一存储器、第一处理器及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现上述通信方式的实现方法中的各个步骤。

请参照图3,本发明另一实施例提供了一种通信方式的实现方法,包括步骤:

与服务器建立HTTP或者HTTPS连接;

接收所述服务器通过所述HTTP或者HTTPS连接发送的连接升级请求;

基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接向所述服务器发送WebSocket连接建立请求。

由上述描述可知,与服务器建立HTTP或者HTTPS连接,当需要建立WebSocket连接时通过HTTP或者HTTPS连接接收服务器发送的连接升级请求,并通过HTTP或者HTTPS发送的WebSocket连接建立请求,因此能够按需动态地根据WebSocket连接建立请求将HTTP或者HTTPS连接升级为WebSocket连接,利用HTTP或者HTTPS的成熟开发框架和资源来建立WebSocket连接,能够延续传统的HTTP或者HTTPS的有效部署方式和开发方式,不必再引入全新的WebSocket的开发模式和部署模式,从而简化开发步骤,节省资源;并且能够实现HTTP或者HTTPS连接和WebSocket连接的切换,根据实际情况选择连接方式,提高传输效率以及通信连接的灵活性。

进一步地,所述接收所述服务器通过所述HTTP或者HTTPS连接发送的连接升级请求包括:

通过所述HTTP或者HTTPS连接向所述服务器发送心跳信息;

接收所述服务器通过所述HTTP或者HTTPS连接发送的针对所述心跳信息的应答信息,所述应答信息中携带所述连接升级请求;

或者,通过所述HTTP或者HTTPS连接向所述服务器发送数据上传指令;

接收所述服务器通过所述HTTP或者HTTPS连接发送的针对所述数据上传指令的数据回传指令,所述数据回传指令中携带所述连接升级请求。

由上述描述可知,通过HTTP或者HTTPS连接发送的心跳信息,接收服务器通过HTTP或者HTTPS发送的针对心跳信息的应答信息;或者通过HTTP或者HTTPS连接发送的数据上传指令,接收服务器通过HTTP或者HTTPS发送的针对数据上传指令的数据回传指令,因此根据HTTP或者HTTPS连接即可直接通过心跳数据或指令的传输接收服务器发送的连接升级请求,能够便利且灵活地建立WebSocket连接;并且只需在应答心跳信息或者回传数据指令的时候携带连接升级请求,不需要单独接收升级请求,能够减少信息接收量,并提高请求效率。

进一步地,所述基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接向所述服务器发送WebSocket连接建立请求之后还包括步骤:

接收所述服务器通过WebSocket连接发送的新建HTTP或者HTTPS连接建立请求;

基于接收到的所述新建HTTP或者HTTPS连接请求通过所述WebSocket连接向服务器发送HTTP或者HTTPS连接建立请求;

或者,通过WebSocket连接向所述服务器发送HTTP或者HTTPS连接建立请求。

由上述描述可知,当需要建立HTTP或者HTTPS连接时,能够通过WebSocket连接传输HTTP或者HTTPS连接建立请求,或者直接向服务器发送HTTP或者HTTPS连接建立请求,从而快速切换连接方式,以适应不同数据量传输的需求,方便灵活地进行传输方式的切换,从而提高执行效率。

进一步地,所述基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接向所述服务器发送WebSocket连接建立请求之后还包括步骤:

当无数据传输时或者所述HTTP或者HTTPS连接闲置时间超过预设时间时,接收所述服务器发送的中断所述HTTP或者HTTPS连接的请求,或者向所述服务器发送中断所述HTTP或者HTTPS连接的请求;

或者,当无数据传输时或者WebSocket连接闲置时间超过预设时间时,接收所述服务器发送的中断所述WebSocket连接的请求,或者向所述服务器发送中断所述WebSocket连接的请求。

由上述描述可知,HTTP或者HTTPS连接主动发生中断的情形有HTTP或者HTTPS连接闲置时间超过预设时间或者接收客户端发送的中断HTTP或者HTTPS连接的请求;WebSocket连接主动发生中断的情形有WebSocket连接闲置时间超过预设时间或者接收客户端发送的中断WebSocket连接的请求因此能够根据实际情况及时中断无数据传输的HTTP或者HTTPS或者WebSocket连接请求和需要中断的HTTP或者HTTPS或者WebSocket连接请求。

请参照图4,本发明另一实施例提供了一种客户端,包括第二存储器、第二处理器及存储在所述第二存储器上并可在所述第二处理器上运行的第二计算机程序,所述第二处理器执行所述第二计算机程序时实现上述通信方式的实现方法中的各个步骤。

本发明上述一种通信方式的实现方法、服务器以及客户端能够适用于各种客户端与服务器之间的通信,特别适用于计算机网络、物联网的客户端-服务器模式的单向或双向主动消息推送的通信方式,以下通过具体实施方式进行说明:

实施例一

本实施例涉及到客户端与服务器之间的交互,请参照图1、图3,一种通信方式的实现方法,包括步骤:

S1、服务器与客户端建立HTTP或者HTTPS连接;

其中,本实施例中,支持广义范围的客户端-服务器模式的分布式计算机系统,其客户端包含但不限于网络服务器、PC电脑、手机平板等移动设备、物联网终端设备,服务器包含但不限于在互联网、局域网或物联网等网络中的服务器;在具体应用实现时,服务器与客户端是一种虚拟定义,不是服务器和客户端的实体概念,其角色可以发生切换,心跳信息发起方可以为客户端,也可以为服务器;同理,心跳信息应答方可以为服务器,也可以为客户端;

其中,服务器与客户端建立HTTP或者HTTPS连接,因此客户端不需要开设网络监听端口,服务器上只需要开设一个网络监听端口,现有的WebSocket需要服务器和客户端的双向端口,且需要在防火墙、路由器上进行大量的配置工作,本实施例中不在客户端开设端口能够减少大量的网络配置工作,同时减少了客户端端口能够提升网络安全性能;

具体的,请参照图5,客户端向服务器发送定向心跳包,服务器端向客户端回传心跳应答包,此心跳应答包中包含了让客户端发起的“新建HTTP或者HTTPS连接的请求”指令;客户端收到“新建HTTP或者HTTPS连接的请求”的指令后,向服务器端发出新建HTTP或者HTTPS连接的请求;服务器收到连接请求后,经过握手等操作,另外新建一条客户端-服务器的单向HTTP或者HTTPS连接;

S2、服务器通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求;

其中,HTTP或者HTTPS连接为单向通道,在此连接过程中,只能由客户端发起指令、数据操作等请求,服务器根据客户端的请求进行相应的响应。客户端向服务器发送数据,可用POST指令,将数据传送到服务器;客户端向服务器请求数据,可用GET指令,将数据从服务器传输到客户端,此种方式比较适合传送大数据;

具体的,在本实施例中,服务器根据需要处理的数据量,当需要处理的数据为小数据或指令时,通过HTTP或者HTTPS连接向所述客户端发送连接升级请求;

S3、服务器接收所述客户端基于接收到的所述连接升级请求通过所述HTTP或者HTTPS连接发送的WebSocket连接建立请求;

具体的,在本实施例中,客户端接收服务器的连接升级请求中包含的指令信息后,能够根据预设的指令进行相应的操作,如接收的指令为双向连接建立指令,则客户端将向服务器发起连接建立请求,服务器收到连接建立请求后,建立起双向WebSocket连接;

S4、根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接;

其中,建立WebSocket连接能够自由选择从客户端或者服务器端发起和对方建立WebSocket连接的要求:客户端如果需要和服务器连接,可以直接向服务器发送建立WebSocket连接的请求;服务器通过网络监听端口监听到此请求后,与客户端之前通过三次握手,建立TCP连接;TCP连接成功后,客户端通过HTTP或者HTTPS协议向服务器传送WebSocket支持的版本号等信息,进行HTTP或者HTTPS握手;服务器收到客户端的握手请求后,同样采用HTTP或者HTTPS协议回馈数据;双方收到了连接成功的消息后,通过TCP通道进行传输通信;至此可双向通讯的WebSocket连接建立了。服务器如果需要和客户端建立连接,则需要在客户端发送过来的心跳包的应答包中,增加一个要求客户端发起WebSocket连接请求的指令信息;客户端收到心跳应答包,解析出要求自己客户端发起WebSocket连接请求的指令信息后,会主动向服务器发送建立WebSocket连接的请求;服务器通过网络监听端口监听到此请求后,然后与客户端先建立起TCP连接,然后再建立双向传输数据的WebSocket连接;

具体的,在本实施例中,WebSocket连接或HTTP或者HTTPS连接通道上传输的数据,可以是同步传输;也可以是异步传输:同步传输,是指一方向另一方传输数据,或者提出需要什么数据,另一方立刻将所需要的数据传输过来;这种传输方式一般用于获取已有的数据,同时另一方正处于空闲时间;如果另一方再在处理其他事务,这时发起请求的一方就需要等待另一方忙完手上的事务并响应此次请求后才能去做其他事务;此种方式一般应用于对响应时间要求较高、实时性较强的业务领域;异步传输,是指一方向另一方发起需要什么数据的请求后,不需要等待数据回传,就直接去处理其他事务;另一方,收到请求后并不急于处理此请求,而是将请求放在任务队列中,按照任务队列中的任务顺序进行执行相关事务;收到请求的另一方执行完此请求后,再向发起请求的一方回传执行的结果或者对应的数据;此种方式比较适用于对实时性要求不高、任务比较繁重的业务领域;

WebSocket连接或HTTP或者HTTPS连接通道上传输的数据,可以是加密数据,也可以是不加密的数据,其中,加密的数据,可以是经过非对称加密处理的数据,也可以是经过对称加密的数据,具体实现根据业务需求而定;

WebSocket连接或HTTP或者HTTPS连接通道上传输的数据,可以是文本的形式,也可以是二进制的形式,具体实现根据业务需求而定;

在一个可选的实施方式中,建立双向WebSocket连接还可以通过心跳信息新建双向WebSocket连接,请参照图6,根据系统设定的心跳机制,客户端定时向服务器发送心跳包,服务器收到客户端发来的心跳包后,回传一个心跳应答包,此时需要客户端发起WebSocket连接请求,因此在服务器向客户端的心跳应答包中,除正常的心跳应答信息之外,还包含了让客户端“发起WebSocket连接请求”的指令;客户端收到服务器回传的心跳应答包并解析出“发起WebSocket连接请求”后,主动向服务器发起WebSocket连接请求。服务器由到客户端发过来的WebStocket连接请求后,与客户端进行握手,建立起双向的WebStocket连接。

实施例二

本实施例与实施例一的不同在于,限定了如何通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求:

在一个可选的实施方式中,所述通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求包括:

接收所述客户端通过所述HTTP或者HTTPS连接发送的心跳信息;

通过所述HTTP或者HTTPS连接向所述客户端发送针对所述心跳信息的应答信息,所述应答信息中携带所述连接升级请求;

具体的,在本实施例中,客户端定时向服务器发送单向心跳数据,其中心跳数据可以是包括TCP协议层心跳和应用层心跳的TCP心跳,也可以是基于UDP的应用层心跳,服务器向客户端发送针对心跳信息的应答信息,在应答信息中可包含多种预先设定的指令,让心跳信息和心跳应答信息携带相关的指令信息,心跳信息与心跳应答信息的格式是系统由自己定义的,包含了正常的心跳信息和指令信息;这些指令信息包括:建立WebSocket连接的指令、建立HTTP或者HTTPS连接的指令、保持WebSocket连接的指令、保持HTTP或者HTTPS连接的指令、WebSocket超时设置的指令、HTTP或者HTTPS连接超时设置的指令、定时任务指令、重启WebSocket连接的指令、重启HTTP或者HTTPS连接的指令、数据同步传输指令和数据异步传输指令等;

其中,心跳信息与心跳应答信息的长度可以从1个比特位(BIT)到数百个字节位(BYTE)大小;

具体的,请参照图7,客户端与服务器端已经建立了单向的HTTP或者HTTPS连接,服务器通过心跳应答包向客户端下发让客户端发起“升级双向连接的请求”指令信息;客户端收到指令信息后,向服务器发出升级双向连接的请求;服务器收到升级连接的请求后,经过握手等操作,将此单向的HTTP或者HTTPS连接升级为双向的WebSocket连接;

在另一个可选的实施方式中,所述通过所述HTTP或者HTTPS连接向所述客户端发送连接升级请求包括:

接收所述客户端通过所述HTTP或者HTTPS连接发送的数据上传指令;

通过所述HTTP或者HTTPS连接向所述客户端发送针对所述数据上传指令的数据回传指令,所述数据回传指令中携带所述连接升级请求;

具体的,在本实施例中还可以接收客户端通过HTTP或者HTTPS连接发送的数据上传指令,服务器通过HTTP或者HTTPS连接向客户端发送针对数据上传指令的数据回传指令;

具体的,请参照图8,客户端与服务器端已经建立了单向的HTTP或者HTTPS连接;服务器通过HTTP或者HTTPS连接通道向客户端下发让客户端发起“升级双向连接的请求”指令信息;客户端收到指令信息后,向服务器发出升级双向连接的请求;服务器收到升级连接的请求后,经过握手等操作,将此单向的HTTP或者HTTPS连接升级为双向的WebSocket连接;

因此,相较于现有浏览器-服务器模式的根据浏览器实时通知服务器并获取服务器数据的方法,本实施例中能够实现服务器实时通知客户端并获取客户端数据,并且升级WebSocket的连接请求可以由客户端或者服务器发起。

实施例三

本实施例与实施例一和实施例二的不同在于,限定了如何将WebSocket连接切换为HTTP或者HTTPS连接:

其中,HTTP或者HTTPS通信应用广泛,成熟可靠,特别是在大量数据传输场景的可靠性极强;而WebSocket通信短小精悍,开销小,数据传输可做到实时双工,因此在指令传输或者小数据传输具有极强的竞争优势;

具体的,在本实施例中,同时提供WebSocket连接与HTTP或者HTTPS连接两种方式,根据业务需求选择具体的通信方式。客户端与服务器之间的指令信息或者少量数据,都可以通过WebSocket连接进行通信;如果客户端与服务器之间有大量数据需要传输,此时比较适合于采用HTTP或者HTTPS连接传输。在WebSocket连接建立后,如果有大数据需要传输时,可以由客户端或者服务器端发起新建HTTP或者HTTPS连接的要求;

在一个可选的实施方式中,所述根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接之后还包括步骤:

通过所述WebSocket连接向所述客户端发送新建HTTP或者HTTPS连接建立请求;

接收所述客户端基于接收到的所述新建HTTP或者HTTPS连接请求通过所述WebSocket连接发送的HTTP或者HTTPS连接建立请求;

根据所述HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接;

具体的,在客户端与服务器已建立了WebSocket连接后,如果服务器要进行大数据传输时,服务器会向客户端通过双向连接发送“新发起一个HTTP或者HTTPS连接的请求”指令,客户端接受到这个指令后,会向服务器新建立一个HTTP或者HTTPS连接,然后双方建立起HTTP或者HTTPS单向传输通道,用于传输大数据;如果客户端要进行大数据传输,则可以向服务器直接发起一个HTTP或者HTTPS连接的请求,然后双方建立起HTTP或者HTTPS单向传输通道,用于传输大数据;

具体的,请参照图9,客户端和服务器之间已经建立了双向WebStocket连接;服务器可通过WebStocket连接,向客户端下发让客户端发起“新建HTTP或者HTTPS连接请求”的指令;客户端收到指令信息后,向服务器发出新建HTTP或者HTTPS连接的请求;服务器收到新建HTTP或者HTTPS连接的请求后,经过握手等操作,新建一条单向的HTTP或者HTTPS连接;

在另一个可选的实施方式中,所述根据所述WebSocket连接建立请求将所述HTTP或者HTTPS连接升级为WebSocket连接之后还包括步骤:

接收所述客户端通过所述WebSocket连接发送的HTTP或者HTTPS连接建立请求;

根据所述HTTP或者HTTPS连接建立请求新建HTTP或者HTTPS连接;

具体的,客户端和服务器之间已经建立了双向WebStocket连接;服务器直接接收客户端发起“新建HTTP或者HTTPS连接请求”的指令;客户端收到指令信息后,向服务器发出新建HTTP或者HTTPS连接的请求;服务器收到新建HTTP或者HTTPS连接的请求后,经过握手等操作,新建一条单向的HTTP或者HTTPS连接;客户端和服务器均能够通过HTTP或者HTTPS连接进行大数据的传输与应答,在无数据传输需求的时候,若闲置时间超时或者服务器或客户端发起中断请求时,服务器与客户端中断HTTP或者HTTPS连接。

实施例四

本实施例与实施例一至实施例三的不同在于,限定了如何WebSocket连接和HTTP或者HTTPS连接的中断触发机制:

其中,当无数据传输时或者所述HTTP或者HTTPS连接闲置时间超过预设时间时,向所述客户端发送中断所述HTTP或者HTTPS连接的请求,或者接收所述客户端发送的中断所述HTTP或者HTTPS连接的请求;

具体的,HTTP或者HTTPS连接的中断可以由客户端主动发起,也可以由服务器主动发起;中断触发有两种机制,一种是根据业务需要,当不再需要数据传输时,由客户端或服务器端主动发起中断操作;第二种是此连接没有传输数据的闲置时间超出了系统设定的超时时间,则系统主动让客户端或服务器主动发起中断操作;

其中,当无数据传输时或者所述WebSocket连接闲置时间超过预设时间时,向所述客户端发送中断所述WebSocket连接的请求,或者接收所述客户端发送的中断所述WebSocket连接的请求;

具体的,WebSocket连接的中断可以由客户端主动发起,也可以由服务器主动发起;中断触发有两种机制,一种是根据业务需要,当不再需要数据传输时,由客户端或服务器端主动发起中断操作;第二种是此连接没有传输数据的闲置时间超出了系统设定的超时时间,则系统主动让客户端或服务器主动发起中断操作;

其中,WebSocket连接和HTTP或者HTTPS连接是否建立连接、是否中断已建立的连接等业务逻辑判断由服务端负责,客户端不进行业务逻辑判断。此通信方式,对服务器与客户端所占用的资源非常小,兼具了传统REST SERVER和WS应用的优点,而且操作灵活,闲置或者按照需要断开,节省服务端资源和网络资源,执行效率高;

其中,心跳应答信息和数据回传指令中包括中断WebSocket连接的指令和中断HTTP或者HTTPS连接的指令。

基于web浏览器的软件应用,一般采用HTTP协议。HTTP协议是单向协议,发起方只能是客户端。为了方便服务器能主动将消息推送给浏览器,一般采用客户端主动向服务器端发起轮询,或者采用WebSocket协议进行双向通讯。在浏览器应用上,WebSocket协议只能由客户端向服务器端发起连接请求,然后双方建立起WebSocket连接;这样建立的WebSocket连接一般是长连接,当应用停止时才会断开,这个过程中服务端被动的来建立和断开WEBSOCKET连接。

比较典型的应用是web聊天室应用,即用户进入web聊天室时,由浏览器向服务器端发起WebSocket连接请求,然后双方建立起WebSocket连接;只有当用户退出聊天室时,WebSocket连接才会中断;WebSocket连接不能由服务器端主动发起,同时也不能根据需求来自由地建立或者中断连接;同时,单向的Http连接与双向的WebSocket连接不能自由地切换。

而采用上述实施例的通信方式后:

1.能够实现服务器端实时的通知客户端并获取客户端数据的需求,同时所建立的WebSocket连接,是基于HTTP连接或HTTPS连接建立的,既可以由客户端发起,也可以由服务器端发起;

2.现有技术中浏览器建立WebSocket连接后只能等到应用不需要或者停止时中断连接,相较于现有技术,能够根据服务器的需求,灵活地实现按需启动连接或中断,客户端也能够根据需求主动断开连接,随时都可以中断WebSocket连接,灵活度高;

3.现有技术中浏览器建立WebSocket连接是可以在没有任何连接建立的前提下直接建立的,相较于现有技术,以客户端与服务器间已进行的单向通信为基础,通过心跳数据或指令信息将单向通信升级为WebSocket连接;

4.能够使用TCP、UDP、HTTP或者HTTPS建立WebSocket连接,也可以由WebSocket连接切换至单向连接;

5.相较于现有技术中WebSocket连接只能基于浏览器或内置浏览器的客户端来实现,上述实施例能够应用于所有的客户端,包括但不只限于浏览器或者内置浏览器的客户端。

实施例五

请参照图2,一种服务器,包括第一存储器、第一处理器及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现上述实施例一至四中任一个中的一种通信方式的实现方法中服务器执行的各个步骤。

实施例六

请参照图4,一种客户端,包括第二存储器、第二处理器及存储在所述第二存储器上并可在所述第二处理器上运行的第二计算机程序,所述第二处理器执行所述第二计算机程序时实现上述实施例一至四中任一个中的一种通信方式的实现方法中客户端执行的各个步骤。

综上所述,本发明提供的一种通信方式的实现方法、服务器以及客户端,与客户端建立HTTP或者HTTPS连接后,当需要建立WebSocket连接时通过HTTP或者HTTPS连接向客户端发送连接升级请求,并接受客户端通过HTTP或者HTTPS发送的WebSocket连接建立请求,因此能够按需动态地根据WebSocket连接建立请求将HTTP或者HTTPS连接升级为WebSocket连接,利用HTTP或者HTTPS的成熟开发框架和资源来建立WebSocket连接,能够延续传统的HTTP或者HTTPS的有效部署方式和开发方式,不必再引入全新的WebSocket的开发模式和部署模式,从而简化开发步骤,节省资源;在升级连接方式时,是以客户端与服务器间已进行的单向通信为基础,确保不在客户端中开设通信端口,并且能够根据在应答客户端的心跳信息或数据上传指令时携带升级连接的请求,方便灵活地实现通信方式的升级,减少信息传输量;相较于现有技术中的只能由客户端发起连接请求的方法,本申请能够由客户端或者服务器发起,能够双向灵活地切换连接方式;根据实际情况通过WebSocket连接新建HTTP或者HTTPS连接,能够根据数据量的大小切换HTTP或者HTTPS连接和WebSocket连接;在中断机制中,通常一旦建立WebSocket连接就需要等到应用停止后才能断开连接,而本申请双方能够随时对连接方式进行中断,也能够对空闲连接进行中断,节约客户端和服务器的资源。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 一种通信方式的实现方法、服务器以及客户端
  • 彩信通客户端与客户端通信服务器及其通信实现的方法
技术分类

06120112736435