CN111431964B - 一种消息同步处理方法、装置及存储介质 - Google Patents
一种消息同步处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111431964B CN111431964B CN202010106876.XA CN202010106876A CN111431964B CN 111431964 B CN111431964 B CN 111431964B CN 202010106876 A CN202010106876 A CN 202010106876A CN 111431964 B CN111431964 B CN 111431964B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- message
- target
- disconnected
- 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.)
- Active
Links
Images
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/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- 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]
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Environmental & Geological Engineering (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种消息同步处理方法、装置及存储介质,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,服务器接收到用于向多个第一客户端广播的消息时,检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端,当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列,以在目标客户端重连后,将所述消息队列中的消息补发至该目标客户端,保证每个参赛者所使用的客户端界面同屏,稳定竞赛的进程和秩序。
Description
技术领域
本发明涉及消息处理技术领域,特别是涉及一种消息同步处理方法、一种消息同步处理装置及存储介质。
背景技术
随着无纸化应用的推行,许多竞赛也转变为了线上模式。在竞赛过程中,裁判员根据比赛进程,向参赛者统一下发竞赛题目,需要保证每个参赛者所使用的客户端界面同屏。但已有的同屏技术过于复杂,当某当个客户端因程序不稳定或网络不稳定掉线时需要花费较长的时间恢复,无法快速、准确地实现各个客户端界面的同屏,不利于竞赛的正常开展。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种消息同步处理方法,相应的一种消息同步处理装置及存储介质。
依据本发明的一个方面,本发明实施例公开了一种消息同步处理方法,应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述方法包括:
所述服务器接收用于向多个第一客户端广播的消息,所述多个第一客户端用于响应所述消息执行相应操作;
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
所述服务器在所述消息队列存储有消息时,判断所述目标客户端是否已经重连;
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息。
可选的,所述服务器中具有即时通讯程序接口WebSocket API,所述服务器与所述第一客户端通过所述WebSocket API通信连接;
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端的步骤包括:
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开WebSocketAPI连接的目标客户端;
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列的步骤包括:
当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述服务器将所述消息存储到所述消息队列。
可选的,当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述方法还包括:
所述服务器发起针对所述WebSocket API的重连操作。
可选的,所述服务器在所述消息队列存储有消息时,判断所述目标客户端是否已经重连的步骤包括:
所述服务器在所述消息队列存储有消息时,按第一预设时间间隔判断所述目标客户端是否已经重连。
可选的,所述当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列的步骤包括:
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器获取所述目标客户端的识别编码;
所述服务器将所述消息和所述目标客户端的识别编码存储到所述消息队列;
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息的步骤包括:
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息。
可选的,所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息的步骤进一步包括:
若所述消息队列中具有多个目标消息,所述服务器在所述目标客户端重连后,按先进先出的顺序向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的所述多个目标消息;
所述方法还包括:
当所述目标消息发送成功时,所述服务器将所述目标消息从所述消息队列中删除。
依据本发明的另一个方面,本发明实施例公开了另一种消息同步处理方法,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述方法包括:
所述第一客户端检测与所述服务器的连接是否断开;
当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
所述第一客户端在与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
所述第一客户端响应所述消息执行相应操作。
可选的,所述第一客户端检测与所述服务器的连接是否断开的步骤包括:
所述第一客户端检测与所述服务器的心跳连接是否断开;
所述当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求的步骤包括:
当检测到与所述服务器的心跳连接断开时,所述第一客户端向所述服务器发起断线重连请求。
可选的,当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求的步骤包括:
当检测到与所述服务器的连接断开时,所述第一客户端按第二预设时间间隔向所述服务器发起断线重连请求。
可选的,所述第二预设时间间隔为3~5秒/次。
可选的,所述方法还包括:
所述第二客户端检测与所述服务器的连接是否断开;
当检测到与所述服务器的连接断开时,所述第二客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第二客户端重新建立连接;
所述第二客户端在与所述服务器重新连接后,确定在连接断开时未发送成功的消息;
所述第二客户端向所述服务器发送所述未发送成功的消息。
依据本发明的一个方面,本发明实施例还公开了一种消息同步处理装置,应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述装置包括:
消息接收模块,用于接收用于向多个第一客户端广播的消息,所述多个第一客户端用于响应所述消息执行相应操作;
第一断线检测模块,用于检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
消息写入模块,用于在检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
重连判断模块,用于在消息队列存储有消息时,判断所述目标客户端是否已经重连;
第一消息重发模块,用于在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息。
依据本发明的另一个方面,本发明实施例还公开了另一种消息同步处理装置,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述装置包括:
第二断线检测模块,用于检测与所述服务器的连接是否断开;
断线重连第一发起模块,用于在检测到与所述服务器的连接断开时,向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
消息重收模块,用于与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
消息响应模块,用于响应所述消息执行相应操作。
根据本发明的另一方面,提供了一种消息同步处理装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述的一个或多个的一种消息同步处理方法。
根据本发明的再一方面,提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行上述的一种消息同步处理方法。
本发明实施例包括以下优点:
在本发明实施例中,从服务器的角度提供了一种消息同步处理方法,服务器接收到用于向多个第一客户端广播的消息时,检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端,当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列,以在目标客户端重连后,将所述消息队列中的消息补发至该目标客户端,以此可从服务器的角度保证每个参赛者所使用的客户端界面同屏,稳定竞赛的进程和秩序;
在本发明实施例中,从第一客户端的角度提供了一种消息同步处理方法,第一客户端可在网络不好或收不到服务器发送的消息时,主动向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;从而保证了第一客户端能接收到漏接的消息,实现与其他客户端的界面同屏,完善了竞赛同屏场景的通信机制;
在本发明实施例中,从第二客户端的角度提供了一种消息同步处理方法,当第二客户端检测到与所述服务器的连接断开时,向所述服务器发起断线重连请求;当第二客户端与服务器重新建立连接后,继续向服务器发送未发送成功的消息,保证竞赛的正常开展。
附图说明
图1是本发明一种消息同步处理方法实施例一的步骤流程图;
图2是本发明实施例一的组网系统示意图;
图3是本发明一种消息同步处理方法实施例二的步骤流程图;
图4是本发明一种消息同步处理方法实施例三的步骤流程图;
图5是本发明一种消息同步处理方法实施例四的步骤流程图;
图6是本发明实施例四的结构示意图;
图7是本发明一种消息同步处理方法实施例五的步骤流程图;
图8是本发明一种消息同步处理装置实施例一的结构示意图;
图9是本发明一种消息同步处理装置实施例二的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例针对如竞赛同屏场景中的问题,提出了一种消息同步处理方法,分别从服务器侧、客户端侧作出相应改进,能保证断线重连后的客户端能及时、准确恢复正常界面,实现各个客户端的同屏,保证竞赛的正常开展。具体的:
在服务器侧提供了一种消息重发机制,针对断线的客户端,服务器将消息保存在消息队列中,在所述客户端恢复后,再将消息队列中的消息补发给所述客户端;
在客户端侧提供了一种断线重连机制,让竞赛通信机制变得更加完善,其中,保障裁判员使用的客户端能及时断线恢复,重发未发送消息;参赛员使用的客户端能及时断线恢复,准确地接收漏接的消息,实现界面同屏。
参照图1,示出了本发明一种消息同步处理方法实施例一的步骤流程图,应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述方法具体可以包括以下步骤:
步骤S101,所述服务器接收用于向多个第一客户端广播的消息,所述多个第一客户端用于响应所述消息执行相应操作;
对应类似竞赛同屏答题的实施环境中,在本发明各个实施例中,第一客户端代表参赛者所使用的终端,多个第一客户端对应多个参赛者。服务器与多个第一客户端通信连接,用于管理多个第一客户端,以及广播相应的消息。所述消息可以为与服务器通信连接的第二客户端发送的,此时,第二客户端代表裁判员所使用的终端,即裁判的客户端。如图2所示,示出了本发明实施例一的组网系统示意图。
针对同一竞赛,服务器会将参赛的第一客户端的地址添加到同一列表中,然后通过广播机制将消息发送给该列表中的所有用户。当服务器与第一客户端通过视联网通信时,上述地址可以为MAC地址;当服务器与第一客户端通过以太网通信时,上述地址可以为IP地址。
优选的,本发明实施例的服务器可以为视联网服务器,第一客户端可以为视联网终端,所述视联网服务器与多个视联网终端通过视联网通信。视联网服务器可采用16位或64位视联网服务器,能够支持216或264个视联网终端通信,应用在本发明实施例中,可实现数万或数十万个参赛者同时在线竞赛。视联网是一个实时网络,采用实时高清视频交换技术,能够实现高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。上述视联网服务器和视联网终端采用市面上已公开产品即可,在此不多赘述。
当服务器收到用于向多个第一客户端广播的消息时,通过消息广播机制将该消息向同一列表中所有的第一客户端发送,多个第一客户端会同时接收到该消息,并执行相应操作,渲染客户端,从而实现界面同屏。
上述过程是在第一客户端与服务器都通信正常时实现的,但当第一客户端因为网络或程序错误等原因无法同时收到该消息时,又如何保证各个第一客户端的界面同屏呢,因此,本发明实施例提出了步骤S102~步骤S105的实现方法。
步骤S102,所述服务器检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。即服务器通过接收客户端的心跳,以确定该客户端处于连接状态,客户端通过接收服务器的心跳,以确定服务器处于连接状态。但在具体实现时,由于服务器与第一客户端可能在心跳的间隔发生过一次断线又连接上了,但这个心跳间隔发送的消息不成功怎么办?因此,本发明实施例为保证竞赛的正常开展,服务器在向第一客户端发送消息前,先执行一个检测步骤,以判断多个第一客户端中是否存在与所述服务器断开连接的目标客户端。
在本发明实施例中,与所述服务器断开连接可以指程序错误引起的掉线,也可以指网络不稳定引起的掉线。无论哪种断开连接,目标客户端均指与所述服务器断开连接的,不能正常接收消息的第一客户端,针对同一消息,掉线的目标客户端的数量可以为一个,可以为多个。
步骤S103,当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
服务器在检测到多个第一客户端中存在与所述服务器断开连接的目标客户端时,就将该消息写入预先设置的消息队列,以防止消息的丢失。“消息队列”是在消息的传输过程中保存消息的容器。
该消息队列可针对每个目标客户端单独设置,即目标客户端与消息队列是对应关系,消息队列中的每个消息都是针对该目标客户端的;也可是一个总的消息队列,能够同时存储针对不同目标客户端的消息,通过目标客户端的识别编码来发送对应的消息,即识别编码与消息队列中所存储的消息是对应关系。
所述消息队列中的消息可以为一个或多个,这是因竞赛的进程快慢和/或裁判员下发的消息不同和/或该目标客户端与服务器断开连接的时长所导致。
步骤S104,所述服务器在所述消息队列存储有消息时,判断所述目标客户端是否已经重连;
在本发明实施例中,在消息队列存储有消息时,会自动触发一个判断机制,服务器会判断目标客户端是否已经重新连接。此判断机制的触发次数可仅设置一两次,也可安预设时间间隔触发,以及时确定目标客户端已经重新连接。
步骤S105,所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息。
在本发明实施例中,服务器在确定所述目标客户端重新连接后,会从所述列表中获取所述目标客户端的地址,并根据所述地址,向目标客户端发送消息队列中的消息。
当目标客户端有多个时,列表中还应包括目标客户端的识别编码,服务器从列表中提取获得识别编码。依据步骤S103的内容,当目标客户端与消息队列是对应关系时,服务器根据所述识别编码,确定目标消息队列,然后将目标消息队列中的消息发送给所述目标客户端;当服务器只设置有一个消息队列时,服务器根据所述识别编码,确定目标消息,然后将目标消息发送给所述目标客户端。
当目标客户端接收到消息后,会对应每个消息,执行相应的操作,渲染显示界面,从而实现各个第一客户端都处于同个界面。
综合步骤S101~步骤S105,本发明实施例从服务器的角度阐述了一种消息同步处理方法的实现过程,服务器可在第一时间发现断开连接的目标客户端,及时对该目标客户端所漏接的消息做缓存处理,并在目标客户端重连后,将所述漏接的消息补发至该目标客户端,保证每个参赛者所使用的客户端界面同屏,稳定竞赛的进程和秩序。
为便于本领域技术人员更深入理解本发明,在实施例一的基础上,参照图3,示出了本发明一种消息同步处理方法实施例二的步骤流程图,应用于服务器,所述服务器与多个第一客户端分别通信连接,其中,所述服务器中具有即时通讯程序接口WebSocket API,所述服务器与所述第一客户端通过所述WebSocket API通信连接。
实现竞赛同屏的一个关键技术为即时通讯技术,即时通讯技术一般用于设备或应用程序客户端APP中,在网页中比较少见,因此,本发明实施例提出了一种基于网页即时通讯的竞赛同屏场景,以扩宽竞赛的应用范围和性能,具体采用WebSocket API使服务器与第一客户端建立通信连接。
WebSocket是一种独立的,创建在单个TCP连接上的进行全双工通信的协议,WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。但已有技术中,当程序不稳定或网络不稳定掉线时,websocket又没有现成的断线重连机制,已有的代码又不能满足本发明实施例的需求,要想保证各个客户端快速恢复同屏具有较大的难度。因此,发明人针对该问题,提出了下述方法:
所述服务器设置有消息队列;所述方法具体可以包括以下步骤:
步骤S301,所述服务器接收用于向多个第一客户端广播的消息,所述多个第一客户端用于响应所述消息执行相应操作;
在本发明实施例中,当消息来源于裁判员所使用的第二客户端时,第二客户端也与服务器通过WebSocket API连接。
该消息可以包括数据、信息、命令等,当消息为数据或信息时,第一客户端渲染为相应的音视频、图片或文档;当消息为命令时,第一客户端依据该命令,执行相应的操作,比如下一题、下一轮、暂停或打分等等。
针对步骤S301,在本发明实施例一具体实施方式中:裁判员依据当前竞赛进度,在第二客户端点击下一轮的操作,第二客户端依据裁判员的触发操作,生成相应的消息,该消息包括将当前竞赛界面跳转至下一轮的指示。然后服务器通过与第二客户端连接的WebSocket API接收所述第二客户端发送的该消息,并在第一客户端与服务器的WebSocketAPI连接正常时,向多个第一客户端广播该消息。第一客户端收到该消息后,执行下一轮的操作,即将当前界面渲染为下一轮对应的界面。
步骤S302,所述服务器检测所述多个第一客户端中是否存在与所述服务器断开WebSocket API连接的目标客户端;
在服务器中设置有多个WebSocket API,每个WebSocket API与第一客户端一一对应。
无论服务器将消息广播或正常发送给第一客户端,都需要调用该第一客户端的WebSocket API,因此,服务器在调用WebSocket API的过程中,即可获得所述第一客户端的WebSocket API的状态,状态为开启则表明所述服务器与所述第一客户端的WebSocket API连接正常,状态为关闭则表明所述服务器与所述第一客户端的WebSocket API连接断开。
步骤S303,当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
在调用WebSocket API的过程中,若服务器检测到所述第一客户端的WebSocketAPI为开启状态,则可将消息直接发送给该第一客户端;但若检测到所述第一客户端的WebSocket API为关闭状态,服务器则将所述消息存储到所述消息队列,以保证即使第一客户端在断线情况下,错漏的消息仍不丢失。
依据实施例一所述,消息队列可以为一个,也可以为多个,在针对同一竞赛建立的列表中存储有每个第一客户端的地址和识别编码。因此,当消息队列为多个时,所述步骤S303可以包括以下子步骤:
所述服务器从所述列表中获取所述目标客户端的识别编码;
所述服务器将所述识别编码与所述消息队列建立绑定关系,并将所述消息存储到相应的消息队列。
当消息队列为一个时,所述步骤S303可以包括以下子步骤:
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器从所列表中获取所述目标客户端的识别编码;
所述服务器将所述消息和所述目标客户端的识别编码存储到所述消息队列。
当消息队列为一个时,针对步骤S303,在本发明一具体实施方式1中:服务器接收的第一个消息为消息1,消息1为执行下一题的命令,服务器在调用多个第一客户端的WebSocket API的过程中,检测到客户端A和客户端B的WebSocket API已关闭,因此服务器从列表中获取到客户端A的识别编码C001,客户端B的识别编码C008,然后将消息1和识别编码C001以及C002写入消息队列中,表示客户端A和客户端B当前暂未收到消息1。
当然,为快速建立WebSocket API连接,当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,本发明实施例还在WebSocket API检测程序写入了以下方法,所述方法还包括:
所述服务器发起针对所述WebSocket API的重连操作。
本发明实施例的服务器在检测到WebSocket API关闭时,可立即发起针对该WebSocket API的重连操作,即开启WebSocket API。但由于程序错误需要响应的原因,WebSocket API可能不会马上恢复开启状态,因此,服务器在这期间可能接收到多个消息,为避免消息丢失以及目标客户端在重连后能准确响应该消息,服务器会在WebSocket API关闭期间,将接收到的消息按顺序写入所述消息队列,即所述消息队列中可能具有多个目标消息。
步骤S304,所述服务器在所述消息队列存储有消息时,判断所述目标客户端的WebSocket API是否已经重连;
具体实现时,在消息队列中存储有消息时,服务器会触发一个主动检查线程,判断目标客户端的WebSocket API是否已经重连,即是否已经开启。为保证能及时发现目标客户端已经重连,所述服务器在所述消息队列存储有消息时,按第一预设时间间隔判断所述目标客户端是否已经重连。优选的,上述第一预设时间间隔可设置为1~3秒。
步骤S305,所述服务器在所述目标客户端的WebSocket API重连后,向所述目标客户端发送所述消息队列中的消息。
基于之前的描述,当目标客户端有多个时,通过识别编码来区分。当消息队列为多个时,所述步骤S305可以包括以下子步骤:
子步骤1:所述服务器在所述目标客户端重连后,根据所述目标客户端的识别编码,向所述目标客户端发送目标消息队列中的消息。
当消息队列为一个时,所述步骤S305可以包括以下子步骤:
子步骤2:所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息。
当然,所述消息队列中可能具有多个目标消息,子步骤1进一步可以包括以下步骤:
若所述消息队列中具有多个目标消息,所述服务器在所述目标客户端重连后,根据所述目标客户端的识别编码,按先进先出的顺序向所述目标客户端发送目标消息队列中的目标消息。
子步骤2进一步可以包括:
若所述消息队列中具有多个目标消息,所述服务器在所述目标客户端重连后,按先进先出的顺序向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的所述多个目标消息。
本发明实施例还包括以下步骤:
当所述目标消息发送成功时,所述服务器将所述目标消息从所述消息队列中删除。
在具体实现时,通过将目标消息从消息队列中及时删除,可避免该目标客户端重连后又再次断开,又再重连时,服务器将上次断开的消息重复发送的情况。
当消息队列为一个时,针对步骤S303~S305,在本发明一具体实施方式中:服务器接收了消息1,在广播消息1前,服务器在调用多个第一客户端的WebSocket API的过程中,检测到客户端A的WebSocket API已关闭,其余第一客户端正常,服务器从列表中获取到客户端A的识别编码C001,然后将消息1和识别编码C001写入消息队列中,表示客户端A当前暂未收到消息1。当消息队列中有消息时,服务器按3秒的时间间隔异步检测客户端A的WebSocket API是否已经重连。若服务器接收到了消息2,而检测到客户端A还未重连,且此时又检测到客户端B(客户端B的识别编码C024)的WebSocket API已关闭,则服务器将消息2和识别编码C001以及C024写入消息队列中,表示客户端A和客户端B当前暂未收到消息2。接着,服务器又按3秒的时间间隔异步检测客户端A和客户端B的WebSocket API是否已经重连,若检测到客户端A已经重连而客户端B还未重连,则服务器根据客户端A的识别编码,从消息队列中提取获得消息1和消息2,然后根据列表中客户端A的地址,先将消息1发送给客户端A,在将消息1发送成功时,服务器将消息1从所述消息队列中删除。接着,服务器再将消息2发送给客户端A,并在消息2发送成功时,将消息2与识别编码C001对应的关系从所述消息队列中删除。此时,消息队列中只有消息2和C024,表明当前只有客户端B未接收到消息2,服务器重复上述步骤。
综上,通过本发明实施例,可提供一种基于WebSocket API的竞赛同屏场景,能确保客户端的WebSocket API断线之后能及时重新连接,能确保客户端的WebSocket API断线重连之后,客户端能收到准确的消息,实现各个客户端界面同屏,保证竞赛正常进行。
依据实施例一所述,步骤S102提供了一种由服务器主动监测多个第一客户端中是否存在与所述服务器断开连接的目标客户端的方法,但这只能保证服务器与第一客户端的通信是否正常,并不能保证第一客户端能接收到该消息,因此,为保证竞赛过程中,每个参赛者所使用的第一客户端能及时准确地接收到消息,本发明实施例还提供了下述方法:
参照图4,示出了本发明一种消息同步处理方法实施例三的步骤流程图,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述方法具体可以包括以下步骤:
步骤S401,所述第一客户端检测与所述服务器的连接是否断开;
在竞赛中,第一客户端作为参赛者所使用的终端与服务器通信连接。当网络不好或收不到服务器发送的消息时,第一客户端会确定与所述服务器的连接断开,以告知及时服务器当前不能正常接收消息,请求恢复与其他第一客户端的同屏。
具体实现时,检测与所述服务器的连接是否断开的方式可以包括:第一客户端检测在预设时间内是否接收到服务器消息;第一客户端检测在预设时间内是否接收到服务器的心跳信息。
步骤S402,当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
为保证第一客户端能接收到服务器发送的消息,发明人设计了一个由第一客户端发起断线重连的机制,当网络不好或收不到服务器发送的消息时,第一客户端会确定与所述服务器的连接断开。此时,第一客户端会主动触发重连操作,请求与服务器重新建立连接,即向所述服务器发起断线重连请求。
断线重连请求中可包括第一客户端的地址,服务器响应所述断线重连请求,根据所述第一客户端的地址,与所述第一客户端重新建立连接。
步骤S403,所述第一客户端在与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
依据本发明实施例一和实施例二所述,服务器在检测到第一客户端(在实施例一核实施例二中为目标客户端)断开连接时,会针对所述第一客户端,将第二客户端发送的消息存储到所述消息队列中。在本发明实施例中,服务器在与第一客户端重新连接后,会先从所述消息队列中提取所述消息,并将该消息发送给所述第一客户端。相应的,第一客户端在与所述服务器重新连接后,也会接收所述服务器从所述消息队列提取并发送的消息。
步骤S404,所述第一客户端响应所述消息执行相应操作。
然后,第一客户端响应所述消息,执行相应的操作,保持当前界面与其它客户端的界面一个样,从而实现同屏。
综合步骤S401~步骤S404,本发明实施例从第一客户端的角度阐述了一种消息同步处理方法的实现过程,第一客户端可在网络不好或收不到服务器发送的消息时,主动向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;第一客户端在与服务器重新建立连接后,会及时接收服务器补发的消息队列中的消息,从而实现与其他第一客户端的界面同屏,稳定竞赛的进程和秩序。
为便于本领域技术人员更深入理解本发明,在实施例三的基础上,参照图5,示出了本发明一种消息同步处理方法实施例四的步骤流程图,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述方法具体可以包括以下步骤:
步骤S501,所述第一客户端检测与所述服务器的心跳连接是否断开;
本发明实施例在网络不好或收不到服务器发送的消息时,提出了一种检测与服务器的连接是否断开的具体实现方式,即通过心跳机制的方式检测与服务器的连接是否断开。心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。当第一客户端在预设时间内不能接收到服务器的心跳信息时,则表明与服务器的连接已断开。
步骤S502,当检测到与所述服务器的心跳连接断开时,所述第一客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
依据实施例二所述,由于WebSocket API有限,只有连接,断开连接,发送消息,错误提示等4个接口。当程序错误引起WebSocket断线的时候,由服务器发起针对所述WebSocket API的重连操作;但当网络断开时,该操作就触发不了,此时本发明实施例的心跳轮询就起作用了。在本发明实施例中,第一客户端检测到与服务器的心跳连接已断开时,向服务器发起断线重连请求,以告诉服务器自己还连接着。
在本发明一可选实施例中,所述步骤S502可以包括以下步骤:
当检测到与所述服务器的心跳连接断开时,所述第一客户端按第二预设时间间隔向所述服务器发起断线重连请求。因为由于网络不稳定的原因,断线重连不一定能连接成功,因此,第一客户端会持续的申请连接,直到成功为止。优选的,将所述第二预设时间间隔设置为3~5秒/次。需要说明的是,第二预设时间间隔设置为3~5秒/次并不是简单的来的,发明人经过长时间测试,发现网络断开时就马上触发连接,有可能导致程序死锁,从而导致3分钟内无法连接。所以,将第二预设时间间隔设置为3~5秒/次可避免上述问题。
本发明实施例的断线重连请求包括第一客户端的地址,可选的,所述断线重连请求还包括第一客户端识别编码。针对同一竞赛,服务器会将参赛的第一客户端的地址和识别编码添加到同一列表中。因此,服务器在接收到断线重连请求时,可将所述识别编码与所述列表中的识别编码进行校验比对,确定第一客户端是否位于所述列表中,以防恶意攻击者的加入,提高竞赛安全性。
当网络稳定时,服务器响应所述断线重连请求,与所述第一客户端重新建立连接。
步骤S503,所述第一客户端在与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
由于程序错误需要响应的原因,WebSocket API可能不会马上恢复开启状态;或因为网络断线的原因,服务器不一定会马上响应断线重连请求。依据本发明实施例一和实施例二所述,服务器在这期间可能接收到多个消息,为避免消息丢失以及目标客户端在重连后能准确响应该消息,服务器在与第一客户端断开连接的期间,将接收到的消息按顺序写入所述消息队列,即所述消息队列中可能具有多个目标消息。因此,本发明实施例的第一客户端在与所述服务器重新连接后,也可能接收到服务器从所述消息队列提取并发送的多个目标消息。
步骤S504,所述第一客户端响应所述消息执行相应操作。
接着上述内容,当消息有多个时,所述第一客户端依次响应所述消息,执行相应的操作。如图6所示,示出了本发明实施例四的结构示意图。
针对步骤S504,在本发明实施例一具体实施方式中:当第一客户端在与所述服务器重新连接后,当前显示界面为断线时的界面,比如为题36。在第一客户端断线期间,服务器依次发送了消息1、消息2和消息3,消息1为执行下一题的命令,消息2为执行暂停的命令,消息3为执行下一轮的命令。第一客户端依次接收消息1、消息2和消息3,首先响应消息1,将当前界面跳转至下一题所在界面,即题37所在界面;然后响应消息2,将当前界面暂停,即暂停题37所在界面;接着再响应消息3,将当前暂停的界面跳转至下一轮答题所在界面,以此实现与其他第一客户端的操作同屏。
此外,在本发明一可选实施例,提供了第二客户端与服务器断开连接时的快速恢复方案,保证竞赛的正常开展。参照图7,示出了本发明一种消息同步处理方法实施例五的步骤流程图,所述方法还可以包括以下步骤:
步骤S701,所述第二客户端检测与所述服务器的连接是否断开;
步骤S702,当检测到与所述服务器的连接断开时,所述第二客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第二客户端重新建立连接;
步骤S703,所述第二客户端在与所述服务器重新连接后,确定在连接断开时未发送成功的消息;
步骤S704,所述第二客户端向所述服务器发送所述未发送成功的消息。
在本发明实施例中,步骤S701~步骤S704的实现方法与第一客户端基于同样的原理,参照实施例三和实施例四的解释,在此不多赘述。当第二客户端与服务器重新建立连接后,继续向服务器发送未发送成功的消息即可。此时,所有的第一客户端都收不到新消息,界面还会处于同一界面,仍然能保证客户端界面的同屏。
在本发明一具体实施方式中:第二客户端在向服务器发送消息2时,与服务器的连接意外断开,导致消息2发送失败。此时第二客户端检测是否能接收到服务器的心跳信息,当不能接收到服务器的心跳信息时,第二客户端向服务器发起断线重连请求,直至服务器在网络稳定时响应该请求,然后重新建立连接。第二客户端在与服务器重新连接后,将消息2向服务器重新发送。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于同一发明构思,参照图8,对应实施例一的方法,示出了本发明一种消息同步处理装置实施例一的结构示意图,可以应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述装置具体可以包括以下模块:
消息接收模块801,用于接收用于向多个第一客户端广播的消息,所述多个第一客户端用于响应所述消息执行相应操作;
第一断线检测模块802,用于检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
消息写入模块803,用于在检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
重连判断模块804,用于在消息队列存储有消息时,判断所述目标客户端是否已经重连;
第一消息重发模块805,用于在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息。
在本发明一可选实施例中,所述服务器中具有即时通讯程序接口WebSocket API,所述服务器与所述第一客户端通过所述WebSocket API通信连接;
所述第一断线检测模块802可以包括以下子模块:
目标客户端检测子模块,用于检测所述多个第一客户端中是否存在与所述服务器断开WebSocket API连接的目标客户端;
所述消息写入模块803可以包括以下子模块:
第一写入子模块,用于在检测到存在与所述服务器断开WebSocket API连接的目标客户端时,将所述消息存储到所述消息队列。
在本发明一可选实施例中,当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述装置具体可以包括以下模块:
重连操作发起模块,用于发起针对所述WebSocket API的重连操作。
在本发明一可选实施例中,所述重连判断模块804可以包括以下子模块:
第一判断子模块,用于在消息队列存储有消息时,按第一预设时间间隔判断所述目标客户端是否已经重连。
在本发明一可选实施例中,所述消息写入模块803可以包括以下子模块:
识别编码获取子模块,用于在检测到存在与所述服务器断开连接的目标客户端时,所述服务器获取所述目标客户端的识别编码;
第一写入子模块,用于将所述消息和所述目标客户端的识别编码存储到所述消息队列;
所述第一消息重发模块805可以包括以下子模块:
目标消息发送子模块,用于在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息。
在本发明一可选实施例中,所述目标消息发送子模块进一步可以包括:
顺序发送子模块,用于在所述消息队列中具有多个目标消息时,在所述目标客户端重连后,按先进先出的顺序向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的所述多个目标消息;
所述装置具体还可以包括以下模块:
目标消息删除模块,用于在所述目标消息发送成功时,将所述目标消息从所述消息队列中删除。
基于同一发明构思,参照图9,对应实施例三的方法,示出了本发明一种消息同步处理装置实施例二的结构示意图,可以应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述装置具体应用于第一客户端,可以包括以下模块:
第二断线检测模块901,用于检测与所述服务器的连接是否断开;
断线重连第一发起模块902,用于在检测到与所述服务器的连接断开时,向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
消息重收模块903,用于与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
消息响应模块904,用于响应所述消息执行相应操作。
在本发明一可选实施例中,所述第二断线检测模块901可以包括以下子模块:
心跳断线第一检测子模块,用于检测与所述服务器的心跳连接是否断开;
所述断线重连第一发起模块902可以包括以下子模块:
重连第一子模块,用于在检测到与所述服务器的心跳连接断开时,向所述服务器发起断线重连请求。
在本发明一可选实施例中,
所述断线重连第一发起模块902可以包括以下子模块:
重连第二子模块,用于在检测到与所述服务器的连接断开时,按第二预设时间间隔向所述服务器发起断线重连请求。
在本发明一可选实施例中,所述第二预设时间间隔为3~5秒/次。
在本发明一可选实施例中,所述装置具体应用于第二客户端,可以包括以下模块:
第三断线检测模块,用于检测与所述服务器的连接是否断开;
断线重连第二发起模块,用于在检测到与所述服务器的连接断开时,向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第二客户端重新建立连接;
消息重发确定模块,用于在与所述服务器重新连接后,确定在连接断开时未发送成功的消息;
第二消息重发模块,用于向所述服务器发送所述未发送成功的消息。
基于同一发明构思,根据本发明的另一方面,提供了一种消息同步处理装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述的一个或多个的一种消息同步处理方法。
基于同一发明构思,根据本发明的再一方面,提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行上述的一种消息同步处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种消息同步处理方法、一种消息同步处理装置及存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种消息同步处理方法,其特征在于,应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述方法包括:
所述服务器接收用于向多个第一客户端广播的消息,通过消息广播机制将所述消息向同一列表中的多个第一客户端发送,所述多个第一客户端用于响应所述消息执行相应操作,渲染显示界面,实现各个第一客户端处于同一个界面;
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
所述服务器在所述消息队列存储有消息时,判断所述目标客户端是否已经重连;
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息;
所述当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列的步骤包括:
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器获取所述目标客户端的识别编码;
所述服务器将所述消息和所述目标客户端的识别编码存储到所述消息队列;
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息的步骤包括:
所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息;
接收目标客户端发送的断线重连请求,所述断线重连请求包括第一客户端的地址和第一客户端识别编码,针对同一竞赛,服务器将所述第一客户端的地址和识别编码添加到同一列表中;
在接收到断线重连请求时,将所述识别编码与所述列表中的识别编码进行校验比对,确定第一客户端是否位于所述列表中。
2.根据权利要求1所述的方法,其特征在于,所述服务器中具有即时通讯程序接口WebSocket API,所述服务器与所述第一客户端通过所述WebSocket API通信连接;
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端的步骤包括:
所述服务器检测所述多个第一客户端中是否存在与所述服务器断开WebSocket API连接的目标客户端;
当检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列的步骤包括:
当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述服务器将所述消息存储到所述消息队列。
3.根据权利要求2所述的方法,其特征在于,当检测到存在与所述服务器断开WebSocket API连接的目标客户端时,所述方法还包括:
所述服务器发起针对所述WebSocket API的重连操作。
4.根据权利要求1所述的方法,其特征在于,所述服务器在所述消息队列存储有消息时,判断所述目标客户端是否已经重连的步骤包括:
所述服务器在所述消息队列存储有消息时,按第一预设时间间隔判断所述目标客户端是否已经重连。
5.根据权利要求1所述的方法,其特征在于,所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息的步骤进一步包括:
若所述消息队列中具有多个目标消息,所述服务器在所述目标客户端重连后,按先进先出的顺序向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的所述多个目标消息;
所述方法还包括:
当所述目标消息发送成功时,所述服务器将所述目标消息从所述消息队列中删除。
6.一种消息同步处理方法,其特征在于,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述方法包括:
所述第一客户端检测与所述服务器的连接是否断开;
当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
所述第一客户端在与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
所述第一客户端响应所述消息执行相应操作,渲染显示界面,实现各个第一客户端处于同一个界面;
当检测到存在与所述服务器断开连接的目标客户端时,以使所述服务器获取所述目标客户端的识别编码;以使所述服务器将所述消息和所述目标客户端的识别编码存储到所述消息队列;以使所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息的步骤包括:所述服务器在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息;
客户端向服务器发送的断线重连请求,所述断线重连请求包括第一客户端的地址和第一客户端识别编码,针对同一竞赛,以使所述服务器将所述第一客户端的地址和识别编码添加到同一列表中;在接收到断线重连请求时,将所述识别编码与所述列表中的识别编码进行校验比对,确定第一客户端是否位于所述列表中。
7.根据权利要求6所述的方法,其特征在于,所述第一客户端检测与所述服务器的连接是否断开的步骤包括:
所述第一客户端检测与所述服务器的心跳连接是否断开;
所述当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求的步骤包括:
当检测到与所述服务器的心跳连接断开时,所述第一客户端向所述服务器发起断线重连请求。
8.根据权利要求6或7所述的方法,其特征在于,当检测到与所述服务器的连接断开时,所述第一客户端向所述服务器发起断线重连请求的步骤包括:
当检测到与所述服务器的连接断开时,所述第一客户端按第二预设时间间隔向所述服务器发起断线重连请求。
9.根据权利要求8所述的方法,其特征在于,所述第二预设时间间隔为3~5秒/次。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述第二客户端检测与所述服务器的连接是否断开;
当检测到与所述服务器的连接断开时,所述第二客户端向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第二客户端重新建立连接;
所述第二客户端在与所述服务器重新连接后,确定在连接断开时未发送成功的消息;
所述第二客户端向所述服务器发送所述未发送成功的消息。
11.一种消息同步处理装置,其特征在于,应用于服务器,所述服务器与多个第一客户端分别通信连接,所述服务器设置有消息队列,所述装置包括:
消息接收模块,用于接收用于向多个第一客户端广播的消息,通过消息广播机制将所述消息向同一列表中的多个第一客户端发送,所述多个第一客户端用于响应所述消息执行相应操作,渲染显示界面,实现各个第一客户端处于同一个界面;
第一断线检测模块,用于检测所述多个第一客户端中是否存在与所述服务器断开连接的目标客户端;
消息写入模块,用于在检测到存在与所述服务器断开连接的目标客户端时,所述服务器将所述消息存储到所述消息队列;
重连判断模块,用于在消息队列存储有消息时,判断所述目标客户端是否已经重连;
第一消息重发模块,用于在所述目标客户端重连后,向所述目标客户端发送所述消息队列中的消息;
所述消息写入模块包括:
识别编码获取子模块,用于在检测到存在与所述服务器断开连接的目标客户端时,所述服务器获取所述目标客户端的识别编码;
第一写入子模块,用于将所述消息和所述目标客户端的识别编码存储到所述消息队列;
所述第一消息重发模块包括:
目标消息发送子模块,用于在所述目标客户端重连后,向所述目标客户端发送所述消息队列中与所述目标客户端的识别编码对应的目标消息;
接收目标客户端发送的断线重连请求,所述断线重连请求包括第一客户端的地址和第一客户端识别编码,针对同一竞赛,服务器将所述第一客户端的地址和识别编码添加到同一列表中;在接收到断线重连请求时,将所述识别编码与所述列表中的识别编码进行校验比对,确定第一客户端是否位于所述列表中。
12.一种消息同步处理装置,其特征在于,应用于客户端,所述客户端与服务器通信连接,所述客户端包括第一客户端和第二客户端;所述服务器中设置有消息队列,所述装置包括:
第二断线检测模块,用于检测与所述服务器的连接是否断开;
断线重连第一发起模块,用于在检测到与所述服务器的连接断开时,向所述服务器发起断线重连请求,以使所述服务器响应所述断线重连请求,与所述第一客户端重新建立连接;
消息重收模块,用于与所述服务器重新连接后,接收所述服务器从所述消息队列提取并发送的消息;所述消息队列中的消息由所述服务器在检测到所述第一客户端断开连接时,写入的由所述第二客户端发送的消息;
消息响应模块,用于响应所述消息执行相应操作,渲染显示界面,实现各个第一客户端处于同一个界面;
客户端向服务器发送的断线重连请求,所述断线重连请求包括第一客户端的地址和第一客户端识别编码,针对同一竞赛,以使所述服务器将所述第一客户端的地址和识别编码添加到同一列表中;在接收到断线重连请求时,将所述识别编码与所述列表中的识别编码进行校验比对,确定第一客户端是否位于所述列表中。
13.一种消息同步处理装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1至10任一项所述的消息同步处理方法。
14.一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如权利要求1至10任一项所述的消息同步处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010106876.XA CN111431964B (zh) | 2020-02-20 | 2020-02-20 | 一种消息同步处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010106876.XA CN111431964B (zh) | 2020-02-20 | 2020-02-20 | 一种消息同步处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111431964A CN111431964A (zh) | 2020-07-17 |
CN111431964B true CN111431964B (zh) | 2023-04-07 |
Family
ID=71551534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010106876.XA Active CN111431964B (zh) | 2020-02-20 | 2020-02-20 | 一种消息同步处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111431964B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422539B (zh) * | 2020-11-08 | 2023-01-24 | 国家电网有限公司 | 基于消息队列的策略同步下发方法 |
CN114915651B (zh) * | 2021-02-09 | 2023-09-26 | 武汉斗鱼网络科技有限公司 | WebSocket的管理方法、装置、电子设备及存储介质 |
CN113411250B (zh) * | 2021-06-03 | 2023-01-24 | 重庆锐云科技有限公司 | 一种实时消息处理方法、系统、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102331A (zh) * | 2007-07-27 | 2008-01-09 | 中国移动通信集团福建有限公司 | 新业务学习系统手机应用拓展的装置 |
CN103281346A (zh) * | 2013-03-06 | 2013-09-04 | 起于凡信息技术(上海)有限公司 | 断线重连方法、网络系统和代理服务器 |
CN103458048A (zh) * | 2013-09-16 | 2013-12-18 | 浪潮电子信息产业股份有限公司 | 一种基于云计算的考试系统搭建方法 |
CN104580537A (zh) * | 2015-02-06 | 2015-04-29 | 深圳中兴网信科技有限公司 | 基于xmpp客户端与服务器的快速重连方法、终端和服务器 |
CN105374249A (zh) * | 2015-12-15 | 2016-03-02 | 浙江工商大学 | 一种移动终端中基于图片显示的在线习题测试方法 |
CN106714334A (zh) * | 2016-12-22 | 2017-05-24 | 网易(杭州)网络有限公司 | 一种断线重连方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3687785B2 (ja) * | 2001-08-15 | 2005-08-24 | 株式会社日本統計事務センター | 採点処理方法および採点処理システム |
-
2020
- 2020-02-20 CN CN202010106876.XA patent/CN111431964B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102331A (zh) * | 2007-07-27 | 2008-01-09 | 中国移动通信集团福建有限公司 | 新业务学习系统手机应用拓展的装置 |
CN103281346A (zh) * | 2013-03-06 | 2013-09-04 | 起于凡信息技术(上海)有限公司 | 断线重连方法、网络系统和代理服务器 |
CN103458048A (zh) * | 2013-09-16 | 2013-12-18 | 浪潮电子信息产业股份有限公司 | 一种基于云计算的考试系统搭建方法 |
CN104580537A (zh) * | 2015-02-06 | 2015-04-29 | 深圳中兴网信科技有限公司 | 基于xmpp客户端与服务器的快速重连方法、终端和服务器 |
CN105374249A (zh) * | 2015-12-15 | 2016-03-02 | 浙江工商大学 | 一种移动终端中基于图片显示的在线习题测试方法 |
CN106714334A (zh) * | 2016-12-22 | 2017-05-24 | 网易(杭州)网络有限公司 | 一种断线重连方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111431964A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111431964B (zh) | 一种消息同步处理方法、装置及存储介质 | |
US7532577B2 (en) | Managing transmission control protocol (TCP) connections | |
CN110032478B (zh) | 一种主备中心数据实时同步方法、装置、系统及存储介质 | |
US20070263626A1 (en) | A System for Session-Oriented Reliable Multicast Transmission. | |
CN109962827B (zh) | 设备链路检测方法、装置、设备及可读存储介质 | |
CN111711680A (zh) | 基于udp协议的文件断点续传方法及装置 | |
CN111385666A (zh) | 通信链路建立方法、装置、设备及存储介质 | |
CN112104918A (zh) | 基于卫星网络的图像传输方法及装置 | |
CN107104822B (zh) | 服务器备灾处理方法、装置、存储介质及电子设备 | |
WO2022161215A1 (zh) | 跨直播间连线的恢复方法和装置 | |
CN102882708A (zh) | 运维审计方法、装置及系统 | |
US9137310B2 (en) | Communication devices, methods and computer readable storage media | |
CN104853234A (zh) | 一种数据处理方法及系统与移动终端 | |
CN111600808A (zh) | 一种用于即时通讯的信息处理方法和装置 | |
CN107733979B (zh) | 数据推送方法、服务器及系统 | |
CN110933775A (zh) | 一种建立信号连接的方法、装置和电子设备 | |
CN107071038B (zh) | 一种传输多媒体数据的方法及装置 | |
US20150054909A1 (en) | Data processing method and device | |
CN115720193A (zh) | 一种基于组播的软件部署方法及装置 | |
CN111970340B (zh) | 信息传输方法、可读存储介质和电子设备 | |
CN116032998A (zh) | 数据传输方法、装置、计算机可读存储介质及电子设备 | |
CN111885097A (zh) | 网卡处理方法、装置、电子设备及存储介质 | |
CN110890989A (zh) | 一种通道连接方法及装置 | |
EP3089459A1 (en) | Apparatus and method for implementing video-on-demand quick switching among multiple screens | |
CN114257630B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |