CN110661697B - 消息同步方法、装置、可读存储介质、电子设备及系统 - Google Patents
消息同步方法、装置、可读存储介质、电子设备及系统 Download PDFInfo
- Publication number
- CN110661697B CN110661697B CN201910853990.6A CN201910853990A CN110661697B CN 110661697 B CN110661697 B CN 110661697B CN 201910853990 A CN201910853990 A CN 201910853990A CN 110661697 B CN110661697 B CN 110661697B
- Authority
- CN
- China
- Prior art keywords
- message
- service
- target
- terminal
- account
- 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
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开涉及一种消息同步方法、装置、可读存储介质、电子设备及系统。该方法包括:获取消息发送终端发送的目标消息,根据账号和服务标识之间的对应关系,确定接收账号对应的目标服务,将目标消息存储在目标服务对应的同步队列中,以使目标服务从目标服务对应的同步队列中提取目标消息,并将目标消息内容推送至与目标服务对应的消息接收终端。如此,即便账号在不同的终端上随时随地登录时,也可以保证消息不丢失,并且无需提前配置分发规则,就可以实现对消息的多端同步。此外,由于消息推送均是在服务器中进行的,消息发送终端和消息接收终端只需要发送、接收目标消息即可,降低了终端的逻辑处理量。
Description
技术领域
本公开涉及通信技术领域,具体地,涉及一种消息同步方法、装置、可读存储介质、电子设备及系统。
背景技术
即时通讯应用一般都允许多端登录,如PC端与移动终端同时登录。多端在线时就存在多端同步问题,当一端进行操作时,操作效果需要同步到其他端。如在一端发送消息,在另一端也能看到该消息,同样地,在收到消息时,其他端也能看到。
在相关技术中,采用预先配置好的分发规则,提前将分发规则加载到内存中,消息同步时,根据消息发送终端、消息类别、消息内容与分发规则中的分发路由计算出需要同步的终端再进行分发。然而,上述技术多是应用于发送终端和接收终端为固定终端且预先定义好同步规则的环境,在发送终端和接收终端不固定的情况下,无法实现将即时通讯消息多端同步的目的。
发明内容
本公开的目的是提供一种消息同步方法、装置、可读存储介质、电子设备及系统,以解决相关技术中存在的问题。
为了实现上述目的,本公开提供一种消息同步方法,所述方法包括:
获取消息发送终端发送的目标消息,所述目标消息包括目标消息内容和接收所述目标消息内容的接收账号;
根据账号和服务标识之间的对应关系,确定所述接收账号对应的目标服务;
将所述目标消息存储在所述目标服务对应的同步队列中,以使所述目标服务从所述目标服务对应的同步队列中提取所述目标消息,并将所述目标消息内容推送至与所述目标服务对应的消息接收终端。
可选地,所述方法还包括:
针对每一终端,确定与所述终端对应的服务的服务标识,以及所述终端中在线的账号;
确定所述账号对应的服务标识的集合;
所述根据账号和服务器标识之间的对应关系,确定所述接收账号对应的目标服务,包括:
从多个所述账号对应的服务标识的集合中,确定所述接收账号对应的服务标识的集合;
将所述接收账号对应的服务标识的集合中的服务标识对应的服务确定为所述接收账号对应的目标服务。
可选地,在所述确定所述账号对应的服务标识的集合之后,所述方法还包括:
针对每一账号,在所述账号从任一终端下线时,确定所述终端对应的第一服务标识,检测是否存在登录有所述账号的第一其他终端与所述第一服务标识对应,若不存在所述第一其他终端,则从所述账号对应的服务标识的集合中删除所述第一服务标识;以及
在所述账号从第二其他终端上线时,确定与所述第二其他终端对应的其他服务的其他服务标识,若所述其他服务标识未位于所述账号对应的服务标识的集合,则将所述其他服务标识添加至所述账号对应的服务标识的集合中。
可选地,所述将所述目标消息存储在所述目标服务对应的同步队列中,包括:
若所述目标服务对应的所述接收账号的数量为N,则在所述目标服务对应的同步队列中存储N个所述目标消息,N为大于1的整数。
可选地,所述目标消息还包括所述消息发送终端的设备标识,所述方法还包括:
在提取到所述目标消息后,根据所述设备标识,确定发送所述目标消息的消息发送终端;
控制所述消息发送终端对应的目标服务禁止将所述目标消息内容推送至所述消息发送终端。
可选地,在所述获取消息发送终端发送的目标消息之后,所述方法还包括:
通过redis将最近M条所述目标消息缓存在消息缓存队列中,以使接收账号下线后再次上线时,所述接收账号对应的目标服务从所述消息缓存队列中提取出K条所述目标消息,并将K条所述目标消息推送至目标服务对应的消息接收终端,M为大于0的整数,K为大于0且小于或等于M的整数。
本公开第二方面还提供一种消息同步装置,所述装置包括:
获取模块,用于获取消息发送终端发送的目标消息,所述目标消息包括目标消息内容和接收所述目标消息内容的接收账号;
第一确定模块,用于根据账号和服务标识之间的对应关系,确定所述接收账号对应的目标服务;
第一存储模块,用于将所述目标消息存储在所述目标服务对应的同步队列中,以使所述目标服务从所述目标服务对应的同步队列中提取所述目标消息,并将所述目标消息内容推送至与所述目标服务对应的消息接收终端。
可选地,所述装置还包括:
第二确定模块,用于针对每一终端,确定与所述终端对应的服务的服务标识,以及所述终端中在线的账号;
第三确定模块,用于确定所述账号对应的服务标识的集合;
所述第一确定模块还包括:
第一确定子模块,用于从多个所述账号对应的服务标识的集合中,确定所述接收账号对应的服务标识的集合;
第二确定子模块,用于将所述接收账号对应的服务标识的集合中的服务标识对应的服务确定为所述接收账号对应的目标服务。
可选地,所述装置还包括:
删除模块,用于针对每一账号,在所述账号从任一终端下线时,确定所述终端对应的第一服务标识,检测是否存在登录有所述账号的第一其他终端与所述第一服务标识对应,若不存在所述第一其他终端,则从所述账号对应的服务标识的集合中删除所述第一服务标识;以及
添加模块,用于在所述账号从第二其他终端上线时,确定与所述第二其他终端对应的其他服务的其他服务标识,若所述其他服务标识未位于所述账号对应的服务标识的集合,则将所述其他服务标识添加至所述账号对应的服务标识的集合中。
可选地,所述第一存储模块还用于若所述目标服务对应的所述接收账号的数量为N,则在所述目标服务对应的同步队列中存储N个所述目标消息,N为大于1的整数。
可选地,所述装置还包括:
第四确定模块,用于在提取到所述目标消息后,根据所述设备标识,确定发送所述目标消息的消息发送终端;
控制模块,用于控制所述消息发送终端对应的目标服务禁止将所述目标消息内容推送至所述消息发送终端。
可选地,所述装置还包括:
第二存储模块,用于通过redis将最近M条所述目标消息缓存在消息缓存队列中,以使接收账号下线后再次上线时,所述接收账号对应的目标服务从所述消息缓存队列中提取出K条所述目标消息,并将K条所述目标消息推送至目标服务对应的消息接收终端,M为大于0的整数,K为大于0且小于或等于M的整数。
本公开第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所提供的所述方法的步骤。
本公开第四方面提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所提供的所述方法的步骤。
本公开第五方面提供一种消息同步系统,所述系统包括:消息发送终端、消息接收终端和服务器,所述消息发送终端和所述消息接收终端分别与所述服务器相连;
所述消息发送终端,用于向所述服务器发送目标消息;
所述消息接收终端,用于接收所述服务器推送的所述目标消息;
所述服务器,用于执行本公开第一方面所提供的所述的方法。
通过上述技术方案,首先,获取消息发送终端发送的目标消息,接着,根据账号和服务标识之间的对应关系,确定接收账号对应的目标服务,最后,将目标消息存储在目标服务对应的同步队列中,以使目标服务从目标服务对应的同步队列中提取目标消息,并将目标消息内容推送至与目标服务对应的消息接收终端。即,通过账号和服务标识之间的对应关系即可确定出接收账号对应的目标服务,进而通过该目标服务将目标消息推送至相应的消息接收终端,如此,即便账号在不同的终端上随时随地登录时,也可以保证消息不丢失,并且无需提前配置分发规则,就可以实现对消息的多端同步。此外,由于消息推送均是在服务器中进行的,消息发送终端和消息接收终端只需要发送、接收目标消息即可,降低了终端的逻辑处理量。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种消息同步系统的示意图。
图2是根据一示例性实施例示出的一种消息同步方法的流程图。
图3是根据另一示例性实施例示出的一种消息同步方法的流程图。
图4是根据一示例性实施例示出的一种接收账号在线时消息同步的示意图。
图5是根据一示例性实施例示出的一种接收账号离线时消息同步的示意图。
图6是根据一示例性实施例示出的一种消息同步装置的框图。
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
由于需要预先配置好分发规则,所以相关技术中消息同步的方案仅适用于发送终端和接收终端都已知或者改变较小的环境。而对于一般的即时通讯应用,同一账号所登录的终端随时都有可能发生变化,例如,账号A可能会在不同的终端设备中登录。若根据账号之前登录的终端情况进行同步,由于账号的登录终端随时可以改变,在这种改变较频繁的情况下去预先配置分发规则是不可行的。即,在相关技术中由于需要提前将分发规则加载到内存中,在账号的登录终端发生变化时将无法实现消息同步。为了解决上述问题,本公开提供一种消息同步方法、装置、可读存储介质、电子设备及系统。
首先,对本公开提供的消息同步系统进行说明,如图1所示,该系统可以包括消息发送终端11、消息接收终端12和服务器13,其中,消息发送终端11、消息接收终端12分别与服务器13通信连接。在本公开中,通过服务器13实现消息发送终端11和消息接收终端12之间的消息同步。
其中,消息发送终端11和消息接收终端12可以例如为笔记本电脑、移动终端、台式电脑等等。图1中以消息发送终端11为移动终端,消息接收终端12为移动终端、台式电脑、笔记本电脑中的至少一者来示意。在即时通讯应用中,该消息接收终端12可以为多个。示例地,如图1所示,该消息接收终端12可以包括第一消息接收终端121、第二消息接收终端122和第三消息接收终端123,且,第一消息接收终端121可以例如为台式电脑,第二消息接收终端122可以例如为移动终端,第三消息接收终端123可以例如为笔记本电脑。即,通过服务器13将消息发送终端11发送的消息同步到第一消息接收终端121、第二消息接收终端122和第三消息接收终端123中。
需要说明的是,本公开仅示出了消息接收终端12的数量为三个的实施例,本领域技术人员须知的是,消息接收终端12的数量还可以是其他数值,例如(两个、四个、五个等等),本公开对此不作具体限定。
下文将详细阐述本公开提供的消息同步方法。
图2是根据一示例性实施例示出的一种消息同步方法的流程图。该方法应用于上述消息同步系统中的服务器。如图2所示,该方法可以包括以下步骤。
在步骤21中,获取消息发送终端发送的目标消息。其中,目标消息包括目标消息内容和接收目标消息内容的接收账号。
需要说明的是在,在本公开中,服务器中预先部署有多个服务,且每个服务具有唯一的服务标识,其中,消息发送终端和消息接收终端均与服务器中的服务建立通信连接。示例地,服务器部署有四个服务,其四个服务分别对应的服务标识为服务标识1、服务标识2、服务标识3和服务标识4,在建立通信连接之前,服务器启动,且服务器中的负载均衡服务可以为消息发送终端和消息接收终端分配对应的服务。例如为消息发送终端分配服务标识1的服务1、为第一消息接收终端分配服务标识2的服务2、为第二消息接收终端122分配服务标识3的服务3、以及为第三消息接收终端123分配服务标识4的服务4。其中,上述服务可以为socket服务。如此,在消息发送终端与服务1建立通信连接后,该服务1可以获取用户在消息发送终端中发送的目标消息,该目标消息可以包括目标消息内容和接收该目标消息内容的接收账号。
示例地,假设用户A在消息发送终端中登录即时通讯账号A(例如,可以为微信账号,QQ账号,飞信账号,等等)并且通过该即时通讯账号与用户B进行通信,其中,用户B对应的账号为账号B。若用户A在其与用户B的会话中发送了“请您明天八点到公司”的内容,则服务1即可从消息发送终端中获取到目标消息内容为“请您明天八点到公司”,以及,以及接收目标消息内容的接收账号为“账号A和账号B”。需要说明的是,由于账号A同一时间可以在不同的终端中登录,为了便于用户A在登录有账号A的终端A1中发送的消息可以同步到登录有该账号A的终端A2上,本公开可以将登录有账号A的除消息发送终端之外的其他终端以及登录有账号B的终端确定为消息接收终端,因此,在本公开中,该接收账号包括发送目标消息的账号和接收该目标消息内容的其他用户的账号。
在步骤22中,根据账号和服务标识之间的对应关系,确定接收账号对应的目标服务。
在本公开中预先存储有各个账号与服务标识之间的对应关系,其中,该账号与服务标识之间的对应关系中,一个账号可以对应多个服务标识。例如,账号A可以与服务标识1和服务标识2对应,账号B可以与服务标识3和服务标识4对应,账号C可以与服务标识5和服务标识6对应,等等。
如此,在步骤21中确定出接收账号之后,可以在预先存储的各个账号与服务标识之间的对应关系中,确定出接收账号对应的服务标识,进而确定接收账号对应的目标服务。示例地,若接收账号为账号A和账号B,则可以将账号A对应的服务标识1的服务1和服务标识2的服务2,以及账号B对应的账号B与服务标识3的服务3和服务标识4的服务4确定为目标服务。
在步骤23中,将目标消息存储在目标服务对应的同步队列中,以使目标服务从目标服务对应的同步队列中提取目标消息,并将目标消息内容推送至与目标服务对应的消息接收终端。
需要说明的是,服务器为每一服务均创建一同步队列,该同步队列用于存储消息发送终端发送的目标消息。此外,当目标消息存储在同步队列之后,服务有专门的线程池从该服务对应的同步队列中提取出该目标消息,并将该目标消息内容推送至该服务对应的消息接收终端。
示例地,若在步骤22中所确定的目标服务标识为服务标识1、服务标识2、服务标识3和服务标识4,则由于每个服务具有唯一的标识,所以可以进一步确定出目标服务为服务1、服务2、服务3和服务4。如此,服务器可以将该目标消息分别存储在服务1、服务2、服务3和服务4各自对应的同步队列中。并且,服务1、服务2、服务3和服务4可以通过其各自的线程池从各个服务对应的同步队列中提取出该目标消息,并将该目标消息中的目标消息内容推送至与目标服务对应的消息接收终端。
具体地,服务1的线程池从服务1的同步队列中提取该目标消息,并将目标消息中包括的目标消息内容推送至与服务1对应的第一消息接收终端,服务2的线程池从服务2的同步队列中提取该目标消息,并将目标消息内容推送至与服务2对应的第二消息接收终端,以及服务3的线程池从服务3的同步队列中提取该目标消息,并将目标消息内容推送至与服务3对应的第三消息接收终端。
采用上述技术方案,首先,获取消息发送终端发送的目标消息,接着,根据账号和服务标识之间的对应关系,确定接收账号对应的目标服务,最后,将目标消息存储在目标服务对应的同步队列中,以使目标服务从目标服务对应的同步队列中提取目标消息,并将目标消息内容推送至与目标服务对应的消息接收终端。即,通过账号和服务标识之间的对应关系即可确定出接收账号对应的目标服务,进而通过该目标服务将目标消息推送至相应的消息接收终端,如此,即便账号在不同的终端上随时随地登录时,也可以保证消息不丢失。并且无需提前配置分发规则,就可以实现对消息的多端同步。此外,由于消息推送均是在服务器中进行的,消息发送终端和消息接收终端只需要发送、接收目标消息即可,降低了终端的逻辑处理量。
下面以一个完整的实施例进行说明,以使本领域技术人员更好的理解本公开所提供的消息同步方法。
图3是根据另一示例性实施例示出的一种消息同步方法的流程图。如图3所示,该方法还可以包括以下步骤。
步骤24中,针对每一终端,确定与终端对应的服务的服务标识,以及终端中在线的账号。
如上所述,服务器中预先部署有多个服务,且每个服务具有唯一的服务标识,每一终端在正常通信时均需要与一服务相连。示例地,终端A1可以与服务1相连、终端A2可以与服务2相连,终端B1可以与服务3相连,终端B2可以与服务4相连,等等。如此,服务器可确定出终端A1对应的服务标识为服务标识1,终端A2对应的服务标识为服务标识2,终端B3对应的服务标识为服务标识3,终端B4对应的服务标识为服务标识4。此外,服务器还确定终端中在线的账号。示例地,服务器确定出的终端A1和终端A2中在线的账号为账号A,终端B1和终端B2中在线的账号为账号B。
在步骤25中,确定账号对应的服务标识的集合。
示例地,继续沿用上述例子,账号A对应的服务标识的集合为{服务标识1,服务标识2},账号B对应的服务标识的集合为{服务标识3,服务标识4}。
此外,考虑到账号从某一终端中下线时,即,该终端会断开与其连接的服务,此时,若该集合中仍存在该服务的服务标识,则该服务仍然会将目标消息存储在该服务对应的同步队列中,但是由于登录该账号的终端已经断开,服务在从同步队列中提取出目标消息后,也无法将该目标消息推送至该终端中,因此,为了减少存储目标消息的工作量,避免存储和提取目标消息时占用网络,导致网络拥堵的弊端,在本公开中,针对每一账号,在账号从任一终端下线时,确定该终端对应的第一服务标识,并检测是否存在登录有该账号的第一其他终端与第一服务标识对应,若不存在第一其他终端,则从账号对应的服务标识的集合中删除第一服务标识。
在一种实施例中,假设账号A初始在终端A1和终端A2中登录,则账号A对应的服务标识的集合为{服务标识1,服务标识2},在账号A从终端A2中下线时,即,终端A2断开与服务2的连接,此时,服务器检测是否存在登录有该账号的第一其他终端与第一服务标识对应。在该实施例中,第一服务标识为服务标识2,由于服务标识2对应的服务仅与终端2连接,所以不存在第一其他终端,进而在该账号从终端2下线时,服务器从该账号对应的服务标识的集合中删除该第一服务标识,即,在上述集合中删除“服务标识2”这一集合元素。
在另一种实施例中,假设账号A初始在终端A1、终端A2和终端A3中登录,且终端A2和终端A3均与服务2连接,考虑到集合的无重复性特征,在本公开中,账号A对应的服务标识的集合为{服务标识1,服务标识2}。在账号A从终端A2中下线时,确定终端A2对应的服务标识2为第一服务标识,由于登录有该账号A的终端2和终端3均与第一服务标识对应,因此,在账号A从终端A2中下线时,无需将“服务标识2”这一集合元素从集合中删除。
另外,在账号从第二其他终端上线时,确定与该第二其他终端对应的其他服务的其他服务标识;若其他服务标识未位于账号对应的服务标识的集合,则将其他服务标识添加至账号对应的服务标识的集合中。
示例地,假设账号A初始在终端A1和终端A2中登录,则账号A对应的服务标识的集合为{服务标识1,服务标识2},在账号A又从终端A3上线时,确定该终端A3对应的服务的服务标识为服务标识7,由于服务标识7不属于账号A对应的服务标识的集合,此时,可以将“服务标识7”这一集合元素添加至账号A对应的服务标识的集合中,更新后的账号A对应的服务标识的集合为{服务标识1,服务标识2,服务标识7}。
在步骤21中,获取消息发送终端发送的目标消息。
如图3所示,上述步骤22可以包括以下步骤。
在步骤221中,从多个账号对应的服务标识的集合中,确定接收账号对应的服务标识的集合。
本领域技术人员须知的是,按照上述步骤24和步骤25可以对每一在线的账号均确定出账号对应的服务标识的集合。服务器在步骤21中获取到目标消息时,可以根据目标消息中包括的接收目标消息内容的接收账号,从多个账号对应的服务标识的集合中,确定出接收账号对应的服务标识的集合。
在步骤222中,将接收账号对应的服务标识的集合中的服务标识对应的服务确定为接收账号对应的目标服务。
在本公开中,接收账号对应的服务标识的集合中包括的服务标识为登录有该接收账号的终端对应的服务的服务标识,因此,再确定出接收账号对应的服务标识的集合之后,可以将该接收账号对应的服务标识的集合中的服务标识对应的服务确定为接收账号对应的目标服务。
示例地,假设账号A对应的服务标识的集合为{服务标识1,服务标识2},账号B对应的服务标识的集合为{服务标识3,服务标识4},则可以将服务标识1、服务标识2、服务标识3和服务标识4分别对应的服务1、服务2、服务3和服务4确定为目标服务。
在步骤23中,将目标消息存储在目标服务对应的同步队列中。
在一种实施例中,目标服务的数量可以为多个,且每个目标服务均与一个消息接收终端对应。如此,服务在获取到目标消息后,可以在每个目标服务对应的同步队列中存储一个目标消息。
在另一种实施例中,在多个目标服务中存在与多个消息接收终端对应的目标服务时,进一步确定该目标服务对应的多个消息接收终端中登录有接收账号的数量,即,确定目标服务对应的接收账号的数量,若目标服务对应的接收账号的数量为N,其中,N为大于1的整数,服务器在该目标服务对应的同步队列中存储N个目标消息。示例地,若目标服务对应的三个消息接收终端,该三个消息接收终端中登录的接收账号为两个,即,有两个消息接收终端登录了同一接收账号,则该目标服务对应的同步队列中存储在两条该目标消息。目标服务从同步队列中提取出一条目标消息,并将该目标消息分别推送至登录有同一接收账号的两个消息接收终端,将另一条目标消息提取出来并推送至登录有另一接收账号的消息接收终端。
由于同一接收账号对应的服务的线程池从同步队列中提取出一个目标消息之后,可以将该目标消息推送至与该服务对应的同一接收账号的不同终端中,因此,在本公开中,若目标服务与N个接收账号对应,即,该目标服务的线程池需从同步队列中提取N个目标消息,以使N个接收账号对应的多个消息接收终端均可以接收到该目标消息内容。
示例地,如图4所示,假设用户A在终端A1和终端A2中登录了账号A,且终端A1、终端A2分别与socket server 1、socket server 2对应。用户B在终端B1和终端B2中登录了账号B,且终端B1、终端B2分别与socket server 2、socket server 3对应,即,如图4所示,账号A对应的服务标识的集合为{socket server 1,socket server 2},账号B对应的服务标识的集合为{socket server 2,socket server 3}。当用户A通过从终端A1给用户B的账号B发送目标消息msg时,服务器需要将该目标消息同步到账号A和账号B所在的所有终端中,即,服务器从账号对应的服务标识的集合中找到目标服务,并将该目标消息msg分别存储目标服务对应的同步队列中,即,在socket server 1的服务对应的同步队列1中存储一条msg,在socket server 2的服务对应的同步队列2中存储两条msg,以及在socket server 3的服务对应的同步队列3中存储一条msg。如此,每个目标服务都可以利用各自的线程池从各自的同步队列中提取消息,然后将该目标消息的内容推送至消息接收终端。需要说明的是,由于接收账号为账号A和账号B,所以在socket server 2的服务对应的同步队列2中存储两条msg。
采用上述技术方案,通过记录账号对应的服务标识的集合,即可实现将消息从服务器中推送至需要进行同步操作的消息接收终端中,无需提前分发规格,即可以实现即时通讯消息多端同步的目的。
然而,由于发送消息的账号A所在的终端A1为消息发送终端,该目标消息的内容已经显示在该终端中,为了避免重复显示,在本公开中,该目标消息还包括消息发送终端的设备标识,在提取到目标消息后,根据设备标识,判断目标消息对应的消息发送终端;控制消息发送终端对应的目标服务禁止将目标消息的内容推送至消息发送终端。
在目标服务获取到目标消息之后,服务器可以根据目标消息中包括的消息发送终端的设备标识,确定出消息发送终端。示例地,如图4所示,服务器可以确定出消息发送终端为终端A1。在确定出消息发送终端之后,服务器可以控制该消息发送终端对应的目标服务禁止将目标消息内容推送至消息发送终端。示例地,服务器控制终端A1对应的目标服务将目标消息丢弃,避免重复在终端A1中显示目标消息内容。
考虑到在实际应用中接收消息的账号可能会处于离线状态,此时,为了避免消息丢失,以及,在接收消息的账号上线时可以快速接收到消息,在本公开中,通过redis将最近M条目标消息缓存在消息缓存队列中。示例地,如图5所示,在用户A向用户B发送目标消息时,服务器可以将该目标消息存储在redis中的消息缓存队列中。在用户B处于离线状态期间,消息缓存队列存储最近的M条目标消息,这样,在用户B通过任一终端上线时,该终端对应的目标服务可以直接从该消息缓存队列中提取出K条目标消息,并将该K条目标消息推送至目标服务对应的消息接收终端,其中,M为大于0的整数,K为大于0且小于或等于M的整数。
此外,如图5所示,服务器还可以包括消息数据库,该消息数据库中存储有所有的消息,即,用户A和用户B通信过程中两者交互的所有消息。这样,在用户B上线后读取完从消息缓存队列中获取的M条目标消息之后,还可以在会话聊天页面下拉页面,以使目标服务从消息数据库中提取出更多的历史消息。
采用上述技术方案,既可以在接收账号处于上线状态时实时获取到同步的消息,还可以在接收账号下线后再上线时,从消息缓存队列中迅速获取到最近M条目标消息。
基于同一发明构思,本公开还提供一种消息同步装置。图6是根据另一示例性实施例示出的一种消息同步装置的框图。如图6所示,该装置可以包括:
获取模块61,用于获取消息发送终端发送的目标消息,所述目标消息包括目标消息内容和接收所述目标消息内容的接收账号;
第一确定模块62,用于根据账号和服务标识之间的对应关系,确定所述接收账号对应的目标服务;
第一存储模块63,用于将所述目标消息存储在所述目标服务对应的同步队列中,以使所述目标服务从所述目标服务对应的同步队列中提取所述目标消息,并将所述目标消息内容推送至与所述目标服务对应的消息接收终端。
可选地,所述装置还可以包括:
第二确定模块,用于针对每一终端,确定与所述终端对应的服务的服务标识,以及所述终端中在线的账号;
第三确定模块,用于确定所述账号对应的服务标识的集合;
所述第一确定模块62还可以包括:
第一确定子模块,用于从多个所述账号对应的服务标识的集合中,确定所述接收账号对应的服务标识的集合;
第二确定子模块,用于将所述接收账号对应的服务标识的集合中的服务标识对应的服务确定为所述接收账号对应的目标服务。
可选地,所述装置还可以包括:
删除模块,用于针对每一账号,在所述账号从任一终端下线时,确定所述终端对应的第一服务标识,检测是否存在登录有所述账号的第一其他终端与所述第一服务标识对应,若不存在所述第一其他终端,则从所述账号对应的服务标识的集合中删除所述第一服务标识;以及
添加模块,用于在所述账号从第二其他终端上线时,确定与所述第二其他终端对应的其他服务的其他服务标识,若所述其他服务标识未位于所述账号对应的服务标识的集合,则将所述其他服务标识添加至所述账号对应的服务标识的集合中。
可选地,所述第一存储模块63还可以用于若所述目标服务对应的所述接收账号的数量为N,则在所述目标服务对应的同步队列中存储N个所述目标消息,N为大于1的整数。
可选地,所述装置还可以包括:
第四确定模块,用于在提取到所述目标消息后,根据所述设备标识,确定发送所述目标消息的消息发送终端;
控制模块,用于控制所述消息发送终端对应的目标服务禁止将所述目标消息内容推送至所述消息发送终端。
可选地,所述装置还可以包括:
第二存储模块,用于通过redis将最近M条所述目标消息缓存在消息缓存队列中,以使接收账号下线后再次上线时,所述接收账号对应的目标服务从所述消息缓存队列中提取出K条所述目标消息,并将K条所述目标消息推送至目标服务对应的消息接收终端,M为大于0的整数,K为大于0且小于或等于M的整数。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图7,电子设备700包括处理器722,其数量可以为一个或多个,以及存储器732,用于存储可由处理器722执行的计算机程序。存储器732中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器722可以被配置为执行该计算机程序,以执行上述的消息同步方法。
另外,电子设备700还可以包括电源组件726和通信组件750,该电源组件726可以被配置为执行电子设备700的电源管理,该通信组件750可以被配置为实现电子设备700的通信,例如,有线或无线通信。此外,该电子设备700还可以包括输入/输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的消息同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器732,上述程序指令可由电子设备700的处理器722执行以完成上述的消息同步方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的消息同步方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (8)
1.一种消息同步方法,其特征在于,所述方法包括:
获取消息发送终端发送的目标消息,所述目标消息包括目标消息内容和接收所述目标消息内容的接收账号,所述接收账号包括发送所述目标消息的第一账号和接收所述目标消息内容的其他用户的第二账号;
从多个账号对应的服务标识的集合中,确定所述接收账号对应的服务标识的集合,其中,所述账号对应的服务标识的集合是通过如下方式确定:
针对每一终端,确定与所述终端对应的服务的服务标识,以及所述终端中在线的账号,确定所述账号对应的服务标识的集合;并针对每一账号,在所述账号从任一终端下线时,确定所述终端对应的第一服务标识,检测是否存在登录有所述账号的第一其他终端与所述第一服务标识对应,若不存在所述第一其他终端,则从所述账号对应的服务标识的集合中删除所述第一服务标识;以及在所述账号从第二其他终端上线时,确定与所述第二其他终端对应的其他服务的其他服务标识,若所述其他服务标识未位于所述账号对应的服务标识的集合,则将所述其他服务标识添加至所述账号对应的服务标识的集合中;
将所述接收账号对应的服务标识的集合中的服务标识对应的服务确定为所述接收账号对应的目标服务;
将所述目标消息存储在所述目标服务对应的同步队列中,以使所述目标服务从所述目标服务对应的同步队列中提取所述目标消息,并将所述目标消息内容推送至与所述目标服务对应的消息接收终端,所述消息接收终端包括登录所述第一账号除所述消息发送终端的其他终端和/或登录所述第二账号的终端。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标消息存储在所述目标服务对应的同步队列中,包括:
若所述目标服务对应的所述接收账号的数量为N,则在所述目标服务对应的同步队列中存储N个所述目标消息,N为大于1的整数。
3.根据权利要求1或2所述的方法,其特征在于,所述目标消息还包括所述消息发送终端的设备标识,所述方法还包括:
在提取到所述目标消息后,根据所述设备标识,确定发送所述目标消息的消息发送终端;
控制所述消息发送终端对应的目标服务禁止将所述目标消息内容推送至所述消息发送终端。
4.根据权利要求1所述的方法,其特征在于,在所述获取消息发送终端发送的目标消息之后,所述方法还包括:
通过redis将最近M条所述目标消息缓存在消息缓存队列中,以使接收账号下线后再次上线时,所述接收账号对应的目标服务从所述消息缓存队列中提取出K条所述目标消息,并将K条所述目标消息推送至目标服务对应的消息接收终端,M为大于0的整数,K为大于0且小于或等于M的整数。
5.一种消息同步装置,其特征在于,所述装置包括:
获取模块,用于获取消息发送终端发送的目标消息,所述目标消息包括目标消息内容和接收所述目标消息内容的接收账号,所述接收账号包括发送所述目标消息的第一账号和接收所述目标消息内容的其他用户的第二账号;
第一确定模块,用于从多个账号对应的服务标识的集合中,确定所述接收账号对应的服务标识的集合,其中,所述账号对应的服务标识的集合是通过如下方式确定:
针对每一终端,确定与所述终端对应的服务的服务标识,以及所述终端中在线的账号,确定所述账号对应的服务标识的集合;并针对每一账号,在所述账号从任一终端下线时,确定所述终端对应的第一服务标识,检测是否存在登录有所述账号的第一其他终端与所述第一服务标识对应,若不存在所述第一其他终端,则从所述账号对应的服务标识的集合中删除所述第一服务标识;以及在所述账号从第二其他终端上线时,确定与所述第二其他终端对应的其他服务的其他服务标识,若所述其他服务标识未位于所述账号对应的服务标识的集合,则将所述其他服务标识添加至所述账号对应的服务标识的集合中;将所述接收账号对应的服务标识的集合中的服务标识对应的服务确定为所述接收账号对应的目标服务;
第一存储模块,用于将所述目标消息存储在所述目标服务对应的同步队列中,以使所述目标服务从所述目标服务对应的同步队列中提取所述目标消息,并将所述目标消息内容推送至与所述目标服务对应的消息接收终端,所述消息接收终端包括登录所述第一账号除所述消息发送终端的其他终端和/或登录所述第二账号的终端。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
7.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-4中任一项所述方法的步骤。
8.一种消息同步系统,其特征在于,所述系统包括:消息发送终端、消息接收终端和服务器,所述消息发送终端和所述消息接收终端分别与所述服务器相连;
所述消息发送终端,用于向所述服务器发送目标消息;
所述消息接收终端,用于接收所述服务器推送的所述目标消息;
所述服务器,用于执行权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910853990.6A CN110661697B (zh) | 2019-09-10 | 2019-09-10 | 消息同步方法、装置、可读存储介质、电子设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910853990.6A CN110661697B (zh) | 2019-09-10 | 2019-09-10 | 消息同步方法、装置、可读存储介质、电子设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110661697A CN110661697A (zh) | 2020-01-07 |
CN110661697B true CN110661697B (zh) | 2022-10-18 |
Family
ID=69036910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910853990.6A Active CN110661697B (zh) | 2019-09-10 | 2019-09-10 | 消息同步方法、装置、可读存储介质、电子设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110661697B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114374555B (zh) * | 2021-12-31 | 2024-06-07 | 广州趣丸网络科技有限公司 | 基于匿名消息的实时互动方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357511A (zh) * | 2016-09-14 | 2017-01-25 | 广东欧珀移动通信有限公司 | 一种信息同步方法及装置 |
CN106453586A (zh) * | 2016-10-31 | 2017-02-22 | 宇龙计算机通信科技(深圳)有限公司 | 一种消息同步方法、装置及系统 |
CN109040300A (zh) * | 2018-09-04 | 2018-12-18 | 航天信息股份有限公司 | 推送消息的方法、装置和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102211535B1 (ko) * | 2013-11-11 | 2021-02-03 | 삼성전자주식회사 | 메신저 서버에서의 전송 메시지 관리 방법 및 컴퓨터 판독 가능한 기록 매체 |
-
2019
- 2019-09-10 CN CN201910853990.6A patent/CN110661697B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357511A (zh) * | 2016-09-14 | 2017-01-25 | 广东欧珀移动通信有限公司 | 一种信息同步方法及装置 |
CN106453586A (zh) * | 2016-10-31 | 2017-02-22 | 宇龙计算机通信科技(深圳)有限公司 | 一种消息同步方法、装置及系统 |
CN109040300A (zh) * | 2018-09-04 | 2018-12-18 | 航天信息股份有限公司 | 推送消息的方法、装置和存储介质 |
Non-Patent Citations (1)
Title |
---|
社交化智能办公平台的设计与实现;高雪;《《北京交通大学硕士专业学位论文》》;20180215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110661697A (zh) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106850402B (zh) | 消息的传输方法和装置 | |
US9451014B2 (en) | Across-application network communication method and device | |
CN103069755B (zh) | 使用多个客户端实例的即时消息传送的方法和系统 | |
CN102958008B (zh) | 一种实现即时通讯的方法、系统和移动终端 | |
CN110012083B (zh) | 一种数据传输方法、服务器及数据传输装置 | |
CN105897888B (zh) | 一种客户端连接方法及系统 | |
CN105337973A (zh) | 消息交互方法及其系统 | |
CN110912805B (zh) | 消息读取状态的同步方法、终端、服务端及系统 | |
CN104539508A (zh) | 访问控制方法和装置 | |
CN110661697B (zh) | 消息同步方法、装置、可读存储介质、电子设备及系统 | |
EP2974159A1 (en) | Method, device and system for voice communication | |
CN103944926A (zh) | 远程桌面会话切换方法、客户端及网关 | |
CN112714159A (zh) | 消息转发方法和装置、存储介质及电子装置 | |
CN102164099A (zh) | 基于网页的实现群组信息交互的方法及系统 | |
CN105490913A (zh) | 即时消息处理方法及装置 | |
KR20220006605A (ko) | 클라우드 통신 방법 및 장치, 사용자 기기, 네트워크 기기 | |
CN104065563A (zh) | 一种即时消息的处理方法、装置及系统 | |
CN108632355B (zh) | 一种家电网络选路方法、控制终端、可读存储介质及设备 | |
CN109766347B (zh) | 一种数据更新方法、装置、系统、计算机设备及存储介质 | |
CN112953794B (zh) | 路由器的网络检测方法、装置、设备及存储介质 | |
CN105227428A (zh) | 未读消息的处理方法、装置及系统 | |
CN114301989A (zh) | 信息传递方法、装置和系统 | |
CN110266438B (zh) | 一种数据传输方法、装置、系统及计算机可读存储介质 | |
CN111641664B (zh) | 一种爬虫设备业务请求方法、装置、系统和存储介质 | |
KR20070044866A (ko) | 착신전환 기능을 가지는 인스턴트 메시지 서비스 장치 및그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No.27, 1st floor, building 14, Haidian Road, zhongjiancai District, Beijing 100096 Applicant after: Beijing PERCENT Technology Group Co.,Ltd. Address before: No.27, 1st floor, building 14, Haidian Road, zhongjiancai District, Beijing 100096 Applicant before: BEIJING BAIFENDIAN INFORMATION SCIENCE & TECHNOLOGY Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |