CN116614485A - 客户端和服务端间的通信方法、装置和电子设备 - Google Patents
客户端和服务端间的通信方法、装置和电子设备 Download PDFInfo
- Publication number
- CN116614485A CN116614485A CN202210123000.5A CN202210123000A CN116614485A CN 116614485 A CN116614485 A CN 116614485A CN 202210123000 A CN202210123000 A CN 202210123000A CN 116614485 A CN116614485 A CN 116614485A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- storage address
- data
- response message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000004891 communication Methods 0.000 title claims abstract description 53
- 230000004044 response Effects 0.000 claims abstract description 87
- 230000002159 abnormal effect Effects 0.000 claims abstract description 28
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000005856 abnormality Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种客户端和服务端间的通信方法、装置和电子设备。其中,该方法包括:获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作;在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。本申请解决了服务端和客户端之间建立长连接时无法保证消息的可靠性和一致性的技术问题。
Description
技术领域
本申请涉及数据通信领域,具体而言,涉及一种客户端和服务端间的通信方法、装置和电子设备。
背景技术
当用户在后台操作数据的时候,服务器需要将某些变更的数据及时通知给客户端(公司的一系列产品,如交互大板、画屏、数字标牌等),但服务器没办法主动请求客户端,因此往往需要在服务器和客户端之间建立长连接,如何保证长连接的稳定性,以及消息的可靠性和一致性,则是值的考虑的事情。
对于消息可靠性,也就是我们需要保证服务器发出的请求能被客户端收到,假设因为网络原因请求实在无法到达客户端,也需要有兜底机制保证用户可以获知该情况。
对于一致性,基于云屏的实际业务,大板客户端对比服务器更加不稳定,会因为各种现实因素而更加频繁地关机(正常和异常)。为此我们需要提供一种机制,让客户端能够在恢复到网络正常后,能确保数据的一致性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种客户端和服务端间的通信方法、装置和电子设备,以至少解决服务端和客户端之间建立长连接时无法保证消息的可靠性和一致性的技术问题。
根据本申请实施例的一个方面,提供了一种客户端和服务端间的通信方法,包括:获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
可选地,将存储地址发送给客户端之前,方法还包括:接收客户端发送的安全套接字websocket连接请求;将客户端和服务端成功建立连接的消息发送给客户端。
可选地,websocket连接请求中携带有客户端的标识信息;方法还包括:在客户端和服务端成功建立连接后将客户端的标识信息存储到服务端中。
可选地,同步序列标识包括:将客户端的标识信息和时间戳进行编码后得到的字符串。
可选地,响应消息与同步序列标识一致,预设超时时间段依据客户端缓存数据对应的存储地址的时间、存储地址和同步序列标识在客户端和服务端的往返时间、冗余时间确定的。
可选地,方法还包括:在预设超时时间段内接收到客户端发送的响应消息时,控制服务端进入空闲状态。
根据本申请实施例的另一方面,还提供了一种客户端和服务端间的通信方法,包括:确定客户端的网络状态;在客户端的网络状态为正常时,向服务端发送安全套接字websocket连接请求;接收服务端发送的客户端和服务端成功建立连接的消息,以及接收服务端发送的与当前更新周期内更新的数据对应的存储地址,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息,更新的数据存储在数据库中;将与存储地址和同步序列标识对应的响应消息发送给服务端。
可选地,接收服务端发送的与当前更新周期内更新的数据对应的存储地址之后,方法还包括:将存储地址缓存到本地。
可选地,方法还包括:在接收到服务端多次发送的相同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给服务端;在接收到服务端多次发送的不同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给服务端。
可选地,将与存储地址和同步序列标识对应的响应消息发送给服务端之后,方法还包括:依据存储地址请求数据库中与存储地址对应的数据;接收数据库返回的与存储地址对应的数据。
根据本申请实施例的再一方面,还提供了一种客户端和服务端间的通信装置,包括:获取模块,用于获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;发送模块,用于将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;处理模块,用于在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;提示模块,用于在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
根据本申请实施例的再一方面,还提供了一种电子设备,包括:存储器,用于存储程序指令;处理器,与存储器连接,用于执行实现以下功能的程序指令:获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
根据本申请实施例的再一方面,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,在程序运行时控制该非易失性存储介质所在设备执行上述客户端和服务端间的通信方法。
在本申请实施例中,通过获取数据库中当前更新周期内更新的数据以及数据对应的存储地址,将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常,达到了依据数据超时重传保证数据的可靠性传输的目的,实现了将更新的数据及时通知客户端以确保数据一致性的技术效果,进而解决了服务端和客户端之间建立长连接时无法保证消息的可靠性和一致性的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现客户端和服务端间的通信方法的计算机终端(或电子设备)的硬件结构框图;
图2是根据本申请实施例的一种客户端和服务端间的通信方法的流程图;
图3是根据本申请实施例的一种建立websocket连接的流程图;
图4a是根据本申请实施例的一种客户端和服务端间的消息传输的示意图;
图4b是根据本申请实施例的一种数据超时重传的示意图;
图5是根据本申请实施例的第一种客户端获取更新的数据包的流程图;
图6是根据本申请实施例的第二种客户端获取更新的数据包的流程图;
图7是根据本申请实施例的另一种客户端和服务端间的通信方法的流程图;
图8是根据本申请实施例的一种请求数据的流程图;
图9是根据本申请实施例的又一种客户端和服务端间的通信方法的流程图;
图10是根据本申请实施例的一种客户端和服务端间的通信装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
同步序列标识:即syn号,由客户端的标识信息和时间戳,经过base64编码得到的字符串,任意服务端在任意时刻发送的请求均不同,客户端的标识信息在客户端和服务端建立websocket连接时存入服务端中。
响应消息:即ack号,与syn号一致,用于通知服务端,客户端已经接收到服务端发送的请求消息。
超时重传:服务端没有接收到客户端发送的ack,在预设超时时间段内会重传多次,该预设超时时间段即最小超时时间。最小超时时间=客户端的缓存数据的时间+客户端和服务端之间的RTT时间(数据包的往返时间)+冗余时间,重传次数没有标准,重传之后需要重新计算超时时间,其中,冗余时间是指在系统发生偶发性错误时,利用时间的持续特性,重复执行发生错误的系统过程,来消除错误的一种容错思想。
数据缓存:客户端接收到服务端发送的数据之后将其暂存到本地。
根据本申请实施例,提供了一种客户端和服务端间的通信方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例所提供的客户端和服务端间的通信方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现客户端和服务端间的通信方法的计算机终端(或电子设备)的硬件结构框图。如图1所示,计算机终端10(或电子设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器(处理器可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或电子设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的客户端和服务端间的通信方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的客户端和服务端间的通信方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或电子设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或电子设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或电子设备)中的部件的类型。
在上述运行环境下,本申请实施例提供了如图2所示的客户端和服务端间的通信方法。图2是根据本申请实施例的一种客户端和服务端间的通信方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;
步骤S204,将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;
步骤S206,在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;
步骤S208,在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
在本申请实施例中,设置有最大重传次数,该最大重传次数对应数据重传次数的预设阈值。在最大重传次数中,经过预设超时时间段仍未收到客户端发送的响应消息,则提示客户端发生异常。
在该客户端和服务端间的通信方法中的步骤S204,将存储地址发送给客户端之前,如图3所示的流程图,具体还包括如下步骤:
步骤S302,接收客户端发送的安全套接字websocket连接请求;
步骤S304,将客户端和服务端成功建立连接的消息发送给客户端。
在步骤S302至步骤S304中,服务端和客户端成功传输数据的前提是,客户端和服务端已经建立了websocket通信连接,因此,在客户端网络正常的情况下,客户端会主动向服务端发起websocket连接请求,服务端接收客户端发送的连接请求后,建立与客户端间的websocket连接通道,并将成功建立websocket连接的消息告知客户端。
在上述步骤S302中,websocket连接请求中携带有客户端的标识信息,该方法在客户端和服务端成功建立连接后将客户端的标识信息存储到服务端中,该客户端的标识信息具有唯一性,即不同的客户端对应的标识信息不同。
在该客户端和服务端间的通信方法中的步骤S204中,同步序列标识包括:将客户端的标识信息和时间戳进行base64编码后得到的字符串,即syn号。
在该客户端和服务端间的通信方法中的步骤S206中,响应消息与同步序列标识一致,预设超时时间段依据客户端缓存数据对应的存储地址的时间、存储地址和同步序列标识在客户端和服务端的往返时间、冗余时间确定的。
需要说明的是,在服务端发送更新的数据对应的存储地址给客户端后,假设存在网络问题的情况下,服务端不能直接报错,即服务端不能直接通过捕获异常后提示客户端,原因如下:假设服务端发送的存储地址对应的数据包到达客户端后,客户端可能因为各种未知原因而无法处理,即无法及时发送响应消息给服务端。在这种情况下,如果认为服务端只保证数据包到达,则客户端需要依赖更加复杂的机制,以便在客户端恢复网络和机制正常的情况下进行数据的拉取和更新操作。而如果客户端能缓存下来服务端发送的数据包,则客户端只需要不断轮询本地数据并做进一步处理即可。而客户端暂时无法处理请求的这种情况并不属于ws(websocket)的异常,如果服务端没有接收到客户端发送的响应消息(即ack),服务端不可感知到这种异常情况,则会导致服务端无法处理。因此,当数据包到达客户端后,需要客户端回传一个响应消息作保证,同时,响应消息必须在客户端对服务端发送的数据包做了持久化处理后再回传,即客户端先缓存数据包,再回传响应消息。
在该客户端和服务端间的通信方法中,在预设超时时间段内接收到客户端发送的响应消息时,控制服务端进入空闲状态。在步骤S206中,若在预设超时时间段内未接收到客户端发送的响应消息时,需进行数据重传的操作,不能在一次预设超时时间段内未接收到响应消息就报错,这是因为响应消息是在客户端做持久化处理之后回传的,客户端处理速度以及网络速度可能存在不稳定的情况,因此客户端的响应消息到达服务端的时间有一定的波动,如果短时间内收不到响应消息就判定数据包发送失败,服务端可能会出现大量异常结果。
正常情况下,如图4a所示的客户端和服务端间的消息传输的示意图中,服务器将数据以及同步序列标识syn号发送给客户端后,客户端先将数据缓存到本地,再将与syn对应的响应消息ack返回给服务端,服务端在预设超时时间段内接收到客户端发送的响应消息时,进入空闲状态;若在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,在超时重传结束后,且没有更新的数据需要发送给客户端时,服务端进入空闲状态。
在另一种可选地实施例中,如图4b所示的数据超时重传的示意图中,针对客户端回传的响应消息在网络中丢失的情况,此时服务端没有接收到客户端回传的响应消息,则进行数据超时重传的操作,客户端在第一次回传了响应消息后仍收到服务端发送的最大重传次数的数据包,则客户端需要在最后一次接收到数据包时再次回传该数据包的响应消息,以通知服务端。而服务端在发送最大重传次数的数据包之后,仍要等待预设超时时间段后才将异常记录到异常数据库中,等待预设超时时间段是为了等待客户端回传的最后一次响应消息。若服务端在该预设超时时间段内仍未收到客户端发送的响应消息,则将异常记录到异常数据库中;若服务端在该预设超时时间段内接收到客户端发送的响应消息,则无需记录异常。
在上述过程中,还存在一种概率很小但可能存在的情况,即在超时重传的过程中,服务端又更新了新的数据,此时服务端存在两种发送情况:当为低频操作时,则将最新更新的数据和超时重传的数据全部发送给客户端,重复传输对于网络的阻塞影响不明显,却能保证推送的数据都到达了客户端,客户端可以在幂等性基础上实现有条件的更新;当为高频操作时,则只传输最新更新的数据给客户端。
通过以上说明可以保证数据传输的可靠性,但还需对客户端的不稳定状态做数据一致性的方案设计。设计思路有两种,一种是保证客户端不发生异常,另一种是即使客户端发生异常,在恢复正常后依旧能保持数据的一致性。
可能导致客户端异常的原因有很多,诸如断电或者人为强制关机等因素,在这种情况下,无法通过任何技术手段避免,因此需要考虑如何在客户端恢复正常之后保持数据一致性的问题。
通过以下两种方案可以保证数据一致性,在图5所示的第一种客户端获取更新的数据包的流程图中,当客户端重启且网络恢复正常之后,客户端通过服务端查询之前所有的轮询接口,如数据包对应的接口或扫码激活的接口等,查询服务端是否有更新的数据,若服务端有更新的数据,则服务端向客户端发送存在更新的数据的第一消息,客户端接收到服务端发送的第一消息后,向服务端发送websocket连接请求,并建立客户端与服务端间的websocket通道,服务端将websocket通道建立成功的消息发送给客户端,并将更新的数据对应在数据库中的存储地址,即第二消息发送给客户端,其中,存储地址中携带有同步序列标识(syn号),客户端在接收到服务端发送的与更新的数据对应的存储地址的第二消息后,将第二消息中的存储地址缓存到本地,并将第二消息的响应消息(ack)回传给服务端,服务端在预设超时时间段内接收到客户端发送的响应消息时,进入空闲状态,客户端依据本地缓存的与更新的数据对应的存储地址,请求数据库中与第二消息对应的数据,数据库在接收客户端的请求消息后,将对应的数据返回给客户端。如果客户端向服务端发送websocket连接请求后,无法连接到服务端,则会在客户端告警提示用户无法连接服务端。
图6是根据本申请实施例的第二种客户端获取更新的数据包的流程图,也可以保证数据的一致性,在图6中,当客户端重连且网络恢复正常之后,由客户端向服务端发送websocket连接请求,并建立客户端与服务端间的websocket通道,服务端将websocket通道建立成功的消息发送给客户端,并查询异常数据库中是否有未成功发送的数据,同时查询是否存在更新的数据,当存在更新的数据时,服务端将更新的数据对应在数据库中的存储地址以及之前未成功发送的数据对应的存储地址作为第三消息一并发送给客户端,其中,存储地址中携带有同步序列标识(syn号),客户端在接收到服务端发送的包含与更新的数据对应的存储地址以及之前未成功发送的数据对应的存储地址的第三消息后,将第三消息中的存储地址缓存到本地,并将第三消息的响应消息(ack)回传给服务端,服务端在预设超时时间段内接收到客户端发送的响应消息时,进入空闲状态,客户端依据本地缓存的第三消息中的存储地址,请求数据库中对应的数据,数据库在接收客户端的请求消息后,将对应的数据返回给客户端。如果客户端向服务端发送websocket连接请求后,无法连接到服务端,则会在客户端告警提示用户无法连接服务端。
对比以上两种客户端获取更新的数据包的过程,可以得知,第二种方案优于第一种方案,原因在于推送数据这一过程全部集中在服务端,不需要再开通更多的接口给客户端进行调用,从而使得代码更具有高内聚性;其次,在第二种方案中,与上述由于网络抖动而进行的数据重传保持了一致。因此,在第二种方案中,无论客户端出于什么原因导致ws通道断开,一旦客户端的网络恢复正常时候,一律由服务端重传所有不成功的数据包,降低了其他开发人员的理解难度。
通过上述步骤,获取数据库中当前更新周期内更新的数据以及数据对应的存储地址,将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常,达到了依据数据超时重传保证数据的可靠性传输的目的,实现了将更新的数据及时通知客户端以确保数据一致性的技术效果,进而解决了服务端和客户端之间建立长连接时无法保证消息的可靠性和一致性的技术问题。
图7是根据本申请实施例的另一种客户端和服务端间的通信方法的流程图,即从客户端的角度对客户端和服务端间的通信方法进行说明,如图7所示,该方法包括如下步骤:
步骤S702,确定客户端的网络状态;
步骤S704,在客户端的网络状态为正常时,向服务端发送websocket连接请求;
步骤S706,接收服务端发送的成功建立连接的消息,以及接收服务端发送的与当前更新周期内更新的数据对应的存储地址,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息,更新的数据存储在数据库中;
步骤S708,将与存储地址和同步序列标识对应的响应消息发送给服务端。
在该客户端和服务端间的通信方法中的步骤S706,接收服务端发送的与当前更新周期内更新的数据对应的存储地址之后,具体还包括如下步骤:将存储地址缓存到本地。
在该客户端和服务端间的通信方法中的步骤S702至步骤S708中,根据客户端接收到的服务端发送的存储地址是否相同,方法还包括如下两个方面:在接收到服务端多次发送的相同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给服务端;在接收到服务端多次发送的不同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给服务端。需要说明的是,在最后一次接收到的请求消息中,可能包含未成功发送的数据以及更新的数据对应的存储地址,也可能仅包含未成功发送的数据的存储地址,或者仅包含更新的数据对应的地址,请求消息中具体包含的内容需要依据实际情况确定。
在该客户端和服务端间的通信方法中的步骤S708,将与存储地址和同步序列标识对应的响应消息发送给服务端之后,如图8所示的流程图,方法具体还包括如下步骤:
步骤S802,依据存储地址请求数据库中与存储地址对应的数据;
步骤S804,接收数据库返回的与存储地址对应的数据。
图9是根据本申请实施例的又一种客户端和服务端间的通信方法的流程图,即从数据库的角度对客户端和服务端间的通信方法进行说明,如图9所示,方法包括如下步骤:
步骤S902,获取服务端更新的数据;
步骤S904,存储更新的数据,并将更新的数据对应的存储地址返回给服务端;
步骤S906,接收客户端的数据请求,其中,数据请求中包括与更新的数据对应的存储地址;
步骤S908,将与存储地址对应的数据返回给客户端。
图10是根据本申请实施例的一种客户端和服务端间的通信装置的结构图,如图10所示,该装置包括:
获取模块1002,用于获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;
发送模块1004,用于将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;
处理模块1006,用于在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;
提示模块1008,用于在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
需要说明的是,图10所示的客户端和服务端间的通信装置用于执行图2至图9所示的客户端和服务端间的通信方法,因此上述客户端和服务端间的通信方法中的相关解释说明也适用于该客户端和服务端间的通信装置,此处不再赘述。
本申请实施例还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,在程序运行时控制该非易失性存储介质所在设备执行以下的客户端和服务端间的通信方法:获取数据库中当前更新周期内更新的数据以及数据对应的存储地址;将存储地址发送给客户端,其中,存储地址中携带有同步序列标识,同步序列标识用于表示服务端发送的请求消息;在预设超时时间段内未接收到客户端发送的响应消息时,进行数据超时重传的操作,其中,响应消息为对与存储地址和同步序列标识所对应的数据重传结果的响应;在数据重传次数达到预设阈值,且在预设超时时间段内未接收到客户端发送的响应消息的情况下,将存储地址所存储的数据记录到异常数据库中,并提示客户端发生异常。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (13)
1.一种客户端和服务端间的通信方法,其特征在于,包括:
获取数据库中当前更新周期内更新的数据以及所述数据对应的存储地址;
将所述存储地址发送给客户端,其中,所述存储地址中携带有同步序列标识,所述同步序列标识用于表示服务端发送的请求消息;
在预设超时时间段内未接收到所述客户端发送的响应消息时,进行数据超时重传的操作,其中,所述响应消息为对与所述存储地址和所述同步序列标识所对应的数据重传结果的响应;
在数据重传次数达到预设阈值,且在所述预设超时时间段内未接收到所述客户端发送的响应消息的情况下,将所述存储地址所存储的数据记录到异常数据库中,并提示所述客户端发生异常。
2.根据权利要求1所述的客户端和服务端间的通信方法,其特征在于,将所述存储地址发送给客户端之前,所述方法还包括:
接收所述客户端发送的安全套接字websocket连接请求;
将所述客户端和所述服务端成功建立连接的消息发送给所述客户端。
3.根据权利要求2所述的客户端和服务端间的通信方法,其特征在于,所述websocket连接请求中携带有所述客户端的标识信息;所述方法还包括:在所述客户端和所述服务端成功建立连接后将所述客户端的标识信息存储到所述服务端中。
4.根据权利要求1所述的客户端和服务端间的通信方法,其特征在于,所述同步序列标识包括:将所述客户端的标识信息和时间戳进行编码后得到的字符串。
5.根据权利要求1所述的客户端和服务端间的通信方法,其特征在于,所述响应消息与所述同步序列标识一致,所述预设超时时间段依据所述客户端缓存所述数据对应的存储地址的时间、所述存储地址和所述同步序列标识在所述客户端和所述服务端的往返时间、冗余时间确定的。
6.根据权利要求1至5中任意一项所述的客户端和服务端间的通信方法,其特征在于,所述方法还包括:在所述预设超时时间段内接收到所述客户端发送的响应消息时,控制服务端进入空闲状态。
7.一种客户端和服务端间的通信方法,其特征在于,包括:
确定客户端的网络状态;
在所述客户端的网络状态为正常时,向服务端发送安全套接字websocket连接请求;
接收所述服务端发送的所述客户端和所述服务端成功建立连接的消息,以及接收所述服务端发送的与当前更新周期内更新的数据对应的存储地址,其中,所述存储地址中携带有同步序列标识,所述同步序列标识用于表示所述服务端发送的请求消息,所述更新的数据存储在数据库中;
将与所述存储地址和所述同步序列标识对应的响应消息发送给所述服务端。
8.根据权利要求7所述的客户端和服务端间的通信方法,其特征在于,接收所述服务端发送的与当前更新周期内更新的数据对应的存储地址之后,所述方法还包括:将所述存储地址缓存到本地。
9.根据权利要求7所述的客户端和服务端间的通信方法,其特征在于,所述方法还包括:
在接收到所述服务端多次发送的相同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给所述服务端;
在接收到所述服务端多次发送的不同存储地址的请求消息时,将最后一次接收到的请求消息中的存储地址缓存到本地,并将最后一次接收到的请求消息的响应消息发送给所述服务端。
10.根据权利要求7所述的客户端和服务端间的通信方法,其特征在于,将与所述存储地址和所述同步序列标识对应的响应消息发送给所述服务端之后,所述方法还包括:
依据所述存储地址请求所述数据库中与所述存储地址对应的数据;
接收所述数据库返回的与所述存储地址对应的数据。
11.一种客户端和服务端间的通信装置,其特征在于,包括:
获取模块,用于获取数据库中当前更新周期内更新的数据以及所述数据对应的存储地址;
发送模块,用于将所述存储地址发送给客户端,其中,所述存储地址中携带有同步序列标识,所述同步序列标识用于表示服务端发送的请求消息;
处理模块,用于在预设超时时间段内未接收到所述客户端发送的响应消息时,进行数据超时重传的操作,其中,所述响应消息为对与所述存储地址和所述同步序列标识所对应的数据重传结果的响应
提示模块,用于在数据重传次数达到预设阈值,且在所述预设超时时间段内未接收到所述客户端发送的响应消息的情况下,将所述存储地址所存储的数据记录到异常数据库中,并提示所述客户端发生异常。
12.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,与所述存储器连接,用于执行实现以下功能的程序指令:获取数据库中当前更新周期内更新的数据以及所述数据对应的存储地址;将所述存储地址发送给客户端,其中,所述存储地址中携带有同步序列标识,所述同步序列标识用于表示服务端发送的请求消息;在预设超时时间段内未接收到所述客户端发送的响应消息时,进行数据超时重传的操作,其中,所述响应消息为对与所述存储地址和所述同步序列标识所对应的数据重传结果的响应;在数据重传次数达到预设阈值,且在所述预设超时时间段内未接收到所述客户端发送的响应消息的情况下,将所述存储地址所存储的数据记录到异常数据库中,并提示所述客户端发生异常。
13.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至6中任意一项所述客户端和服务端间的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210123000.5A CN116614485A (zh) | 2022-02-09 | 2022-02-09 | 客户端和服务端间的通信方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210123000.5A CN116614485A (zh) | 2022-02-09 | 2022-02-09 | 客户端和服务端间的通信方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116614485A true CN116614485A (zh) | 2023-08-18 |
Family
ID=87675176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210123000.5A Pending CN116614485A (zh) | 2022-02-09 | 2022-02-09 | 客户端和服务端间的通信方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116614485A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117692364A (zh) * | 2023-11-23 | 2024-03-12 | 小米汽车科技有限公司 | 车载以太网自检方法、装置及电子设备 |
-
2022
- 2022-02-09 CN CN202210123000.5A patent/CN116614485A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117692364A (zh) * | 2023-11-23 | 2024-03-12 | 小米汽车科技有限公司 | 车载以太网自检方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2713641A1 (en) | Method for receiving data, method for transmitting data, mobile terminal, and server | |
CN111371631B (zh) | 一种心跳机制检测方法、终端设备和存储介质 | |
EP2816477A1 (en) | Synchronized update of multiple devices in a local network | |
CN110391974A (zh) | 一种消息同步方法、服务端、终端及系统 | |
CN109802995B (zh) | 消息推送方法、装置、设备及存储介质 | |
CN113630465A (zh) | 消息处理方法、装置、设备以及存储介质 | |
CN116614485A (zh) | 客户端和服务端间的通信方法、装置和电子设备 | |
CN107508916B (zh) | 用于智能机器人的服务器链接管理方法 | |
CN105978796A (zh) | 基于不稳定移动网络的消息通信方法及系统 | |
CN111431964B (zh) | 一种消息同步处理方法、装置及存储介质 | |
CN107786607B (zh) | 一种消息重传方法、消息重传服务器及用户设备 | |
CN103516766A (zh) | 一种客户端与应用服务器间进行通信的方法和系统 | |
CN116599953B (zh) | 一种文件上传的方法、装置、系统、设备及可读存储介质 | |
CN112970238A (zh) | Lwm2m客户端状态同步 | |
CN111818582B (zh) | 数据传输方法、装置及电子设备 | |
CN111083016B (zh) | 一种轮询表处理方法及装置、存储介质和设备 | |
CN112839106A (zh) | 通信方法及装置、电子设备及介质 | |
CN105553762A (zh) | 家用电器与移动终端之间的通信方法、系统及相应装置 | |
CN107733979B (zh) | 数据推送方法、服务器及系统 | |
CN113794622B (zh) | 消息处理方法、装置、电子设备及存储介质 | |
US20190236331A1 (en) | Method, apparatus, and storage medium for data verification | |
CN108988994B (zh) | 报文的重传方法及装置 | |
CN106230747B (zh) | 恢复tcp连接序列号的方法、装置及系统 | |
CN107071038B (zh) | 一种传输多媒体数据的方法及装置 | |
CN115038115A (zh) | 数据传输方法、装置、电子设备、存储介质和产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |