CN108667899B - 多终端消息同步和隔离即时通讯方法及系统 - Google Patents
多终端消息同步和隔离即时通讯方法及系统 Download PDFInfo
- Publication number
- CN108667899B CN108667899B CN201810272438.3A CN201810272438A CN108667899B CN 108667899 B CN108667899 B CN 108667899B CN 201810272438 A CN201810272438 A CN 201810272438A CN 108667899 B CN108667899 B CN 108667899B
- Authority
- CN
- China
- Prior art keywords
- message
- synchronization
- server
- sync
- receiving
- 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/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
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
-
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种多终端消息同步和隔离即时通讯方法及系统,该方法包括:用户通过发送端与服务器建立连接,将消息发送给服务器,服务器对消息进行格式及合法性校验;校验通过后,生成同一消息类型全局唯一的同步ID;服务器向发送端发送确认报文ACK,确认报文ACK里返回消息ID对应的同步ID,发送端把收到同步ID更新到刚才发生的消息中;同时,服务器根据消息类型、消息和预先配置好的分发规则进行过滤分发处理;接收端接收服务器分发的消息,主要分在线接收消息和离线同步消息;本发明解决云服务开放合作的背景下,跟不同合作公司间合作不同业务的即时消息在不同终端的多端同步及隔离,并保证消息不丢失,并兼顾了对方在线和离线处理。
Description
技术领域
本发明涉及移动通信技术领域,尤其涉及一种多终端消息同步和隔离即时通讯方法及系统。
技术背景
在移动互联网时代,即时通讯是企业APP等终端提供企业服务的一个基本功能,企业间横向纵向合作也是常态,而且随着业务拓展,合作方也会越来越多,而跟不同的合作者间,在业务系统打通的同时,相关的即时通讯消息需要互通,有些定制业务的消息则需要隔离。比如企业平台既整合供给端,同时也拓展消费端,供给端服务有些可以共享,有些则不能,所以企业提供的即时通讯服务平台,既要考虑多端同步互通而且要考虑消息隔离。
举个实际例子,比如平台提供医生视频问诊服务,视频的建立走的是即时通讯机制,问诊业务分为免费问诊、全科问诊、VIP问诊,不同的医生开通不同类型的服务,而且有不同的接诊端,接不同类型的问诊业务,比如医生PAD版能接所有的、手机版只能接免费问诊和全科问诊。那免费问诊的视频邀请消息同时要发给2个终端,而VIP问诊的视频邀请只能发给PAD版终端。
现有的即时通讯技术,一般只解决企业自有端的即时通讯,进一步则解决多端消息同步,而缺少考虑,企业开放业务服务进行合作同时,必须也要开放即时通讯服务,和不同企业APP间结合的消息同步和隔离问题。
发明内容
针对上述不足,本发明提供一种多终端消息同步和隔离即时通讯方法及系统,该方法在不同用户终端、处理不同用户间、不同终端间的即时通讯,解决云服务开放合作的背景下,跟不同合作公司间合作不同业务的即时消息在不同终端的多端同步及隔离,并保证消息不丢失,并兼顾了对方在线和离线处理。
本发明所采用的技术方案如下:一种多终端消息同步和隔离即时通讯方法,包括:
S1用户通过发送端进行登录校验,与服务器建立连接;
S2发送端将消息发送给服务器,所述消息包括消息ID、消息类型编码、发送方用户ID、发送方终端编码、接收方用户ID、接收方终端编码以及消息内容;
S3服务器对接收到的消息进行消息格式及合法性校验;校验通过后,根据消息类型编码,生成同一消息类型全局唯一的同步ID;
S4服务器把生成同步ID和消息一起存储到数据库表MSG_HIS中,每个消息类型对应一张消息历史表;
S5服务器向发送端发送确认报文ACK,确认报文ACK里返回消息ID对应的同步ID,发送端把收到同步ID更新到刚才发生的消息中,并一起存储到本地;同时,服务器根据消息类型、消息和预先配置好的分发规则进行过滤分发处理;
S6接收端接收服务器分发的消息,主要分在线接收消息和离线同步消息;
若接收端在线,直接收取服务端推送的在线消息,并返回确认报文ACK给服务端,服务端收到确认报文ACK,说明服务端消息分发结束;
若接收端离线,服务器对分发的消息进行离线存储处理,等接收端登录后,再根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息。
进一步的,所述步骤S1具体如下:
用户在发送端发送消息前,必须先跟服务端建立TCP连接,并向服务端发送消息类型为登录的消息,进行用户登录操作;
服务端收到登录报文后,校验登录报文的用户登录信息,如果校验通过,记录发送端登录信息,并返回登录成功报文;
发送端收到登录成功报文后,表示用户在发送端登录成功,后续发生的消息的发送方为该用户的用户ID,并给与该发送端一个终端编码。
进一步的,所述服务器对接收到的消息进行消息格式及合法性校验,如果校验不通过,会丢弃消息,并通知发送端非法报文,统计达到一定数量阀值,断开与发送端的连接。
进一步的,所述预先配置好的分发规则如下:针对发送端,根据消息报文格式里是否有指定用户的接收端,若有,则发送给指定用户终端,若无,则发送给用户所在的所有接收端;针对服务器,1)若接收端和消息类型不在同一个域,则表示这个消息不能与该接收端互通;2)根据某一消息类型的消息数据内容里的匹配内容来配置消息的路由规则。
进一步的,所述步骤S6中,若接收端在线,直接收取服务端推送的在线消息,根据消息类型,查询本地对应消息类型的本地数据库表中的消息表,消息表中如果同步ID存在,说明已经收过该消息,处理结束;如果不存在,则存储该消息到消息表并更新该消息类型对应的同步ID,对比本地同步表MSG_SYNC里对应消息类型的同步ID,如果消息里的同步ID大于MSG_SYNC的同步ID,更新同步ID,小于则结束,如果没有该记录新增一条记录。
进一步的,如果服务端在分发在线消息的时候,如果有一个接收端在指定的时间内,没有返回确认报文ACK,服务端记录分发错误的记录到分发错误表MSG_SEND_ERROR。
进一步的,所述步骤S6中,根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息,具体如下:
S601接收端获取本地同步表MSG_SYNC里的消息类型及对应的消息同步ID;
S602接收端分别发送每个消息类型的同步确认报文SYNC_CHK,所述同步确认报文SYNC_CHK包括消息ID、消息类型编码、用户ID、请求同步消息类型和同步ID;
S603服务端收到同步确认报文SYNC_CHK后,查询服务端的数据库表MSG_HIS、同步表MSG_SYNC及分发错误表MSG_SEND_ERROR里对应用户ID及消息类型的最小同步ID,再跟接收到的报文里的同步ID对比,如果报文里的同步ID小,取报文里的同步ID,反之则取最小同步ID并再减1,设置同步ID到SYNC_CHK_RST报文里,返回同步结果给接收端,所述同步结果报文SYNC_CHK_RST包括消息ID、消息类型编码、请求同步消息类型和同步ID;
S604接收端收到同步结果报文SYNC_CHK_RST的消息类型及同步ID后,更新本地同步表MSG_SYNC里对应消息类型的本地同步ID;
S605接收端向服务端发送同步请求报文SYNC_REQ,所述同步请求报文SYNC_REQ包括消息ID、消息类型编码、用户ID、请求同步消息类型和本地同步ID;
S606服务端收到同步请求报文SYNC_REQ后,查询服务端的数据库表MSG_HIS,返回满足下述条件的指定条数纪录的消息记录,条件为:1)与接收方用户ID相等,2)与接收方终端编码相等或者接收方终端编码为空,3)同步ID大于报文里的同步ID;
S607服务器对获得的消息记录,进行过滤分发处理,返回匹配的离线记录,并设置到返回报文SYNC_RESP里,一次离线同步处理结束;
S608接收端收到SYNC_RESP后,对离线记录里的历史消息,逐条进行下述处理:接收端根据消息类型,查询本地对应消息类型的本地数据库消息表,表中如果同步ID存在,说明已经收过该消息,该条历史消息处理结束;如果不存在,则存储该消息到消息表;
S609获取返回报文里历史消息的最大的同步ID,跟本地表MSG_SYNC中该消息类型的同步ID对比,如果消息里的最大同步ID大于表里的同步ID,更新MSG_SYNC该消息类型对应的同步ID,反之结束,如果MSG_SYNC没有该消息类型的记录,则新增一条记录;
S610接收端重复步骤S605-步骤S609,直至返回报文SYNC_RESP,没有返回历史记录为止。
本发明的另一目的是提供一种多终端消息同步和隔离的即时通讯系统,包括:
发送端,所述发送端包括:
登录连接请求模块,用于向服务端发送消息类型为登录的消息,进行用户登录操作;
消息发送模块,用于将消息发送给服务器,所述消息包括消息ID、消息类型编码、发送方用户ID、发送方终端编码、接收方用户ID、接收方终端编码以及消息内容;
本地存储模块,用于把收到同步ID更新到刚才发生的消息中,并一起存储到本地;
服务器,包括:
接收连接模块,用于接收登录连接请求模块发送的登录报文后,校验登录报文的用户登录信息,如果校验通过,记录发送端登录信息,并返回登录成功报文给登录连接请求模块;
消息同步模块,用于对接收到的消息进行消息格式及合法性校验;校验通过后,根据消息类型编码,生成同一消息类型全局唯一的同步ID;把生成同步ID和消息一起存储到数据库表MSG_HIS中,每个消息类型对应一张消息历史表;
消息分发处理模块,用于向发送端发送确认报文ACK,确认报文ACK里返回消息ID对应的同步ID,同时,根据消息类型、消息和预先配置好的分发规则进行过滤分发处理;
离线存储模块,用于当接收端处于离线时对分发的消息进行离线存储处理;
接收端,包括:
在线接收消息模块,用于直接收取服务端推送的在线消息,并返回确认报文ACK给服务端,服务端收到确认报文ACK,说明服务端消息分发结束;
登录连接请求模块,用于向服务端发送消息类型为登录的消息,进行用户登录操作;
离线同步消息模块,用于等接收端登录后,再根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息。
进一步的,所述预先配置好的分发规则如下:针对发送端,根据消息报文格式里是否有指定用户的接收端,若有,则发送给指定用户终端,若无,则发送给用户所在的所有接收端;针对服务器,1)若接收端和消息类型不在同一个域,则表示这个消息不能与该接收端互通;2)根据某一消息类型的消息数据内容里的匹配内容来配置消息的路由规则。
本发明的有益效果如下:本发明采用了ACK确认机制,保证了消息至少一次到达,保证了消息的可靠性;采用了的同步机制,保证了多端同步的简单实现和减少服务端复杂性;采用了C++研发不同语言端的带本地存储的通用SDK架构,使业务终端大大降低终端研发成本同时保障消息可靠性;采用了按消息域、消息类型和消息内容的三种粒度的消息分规则,实现了不同合作公司业务终端间,合作不同业务时的即时消息精准到达;采用了服务端配置分发规则,使随时满足消息分发业务需求变化;采用了按消息类型的划分设计和存储机制,使得能根据不同消息类型的业务场景,做灵活的区别设计和扩容,按消息类型设计性能指标,提高性能和节约运维成本。
附图说明
图1为消息的发送实现同步和隔离的处理流程概览图;
图2为终端和服务端同步的协议交互过程图。
具体实施方式
下面结合附图对本发明做进一步的说明。
为表述简洁,下面描述提到的消息特指本发明的即时通讯消息,包括一对一通讯和群组通讯模式。下属描述中提到的终端(发送端和接收端),特指包含本发明客户端SDK的客户端应用程序,可以是桌面客户端应用,也可以是安卓、IOS的APP等。本发明通过底层SDK的方式解决不同客户开发的不同终端的协议一致性及升级兼容性。
图1中展示了本发明的即时通讯方法实施的一种场景流程示意图,有3个不同的终端,分别是终端A(发送端)、终端B(接收端)、终端C(接收端);包含2个消息,分别是MSG1,MSG2,用户1通过终端A登录发送的MSG1的消息,用户3在终端B和终端C进行同时登录,都收到这个消息,而用户2通过终端A登录发出的MSG2,用户3在终端C能收到,而不能在终端B收到,从而实现了消息同步和隔离即时通讯,具体方法如下:
步骤S1、用户1在终端A发送消息前,必须先跟服务端建立TCP连接,并向服务端发送消息类型为登录的消息,进行用户登录操作。
步骤S2、服务端收到登录报文后,校验登录报文的用户登录信息,如果校验通过,记录终端登录信息,并返回登录成功报文。
步骤S3、终端A收到服务端的用户1登录成功报文后,表示用户1在终端A登录成功,后续发生的消息的发送方为用户1的用户ID,终端编号为终端A的终端编号。
步骤S4、终端A开始构建消息数据包,生成基于当前连接唯一的消息ID,消息MSG1的内容,如下表所示,然后编码成二进制发送;
步骤S5、服务的收到消息MSG1,进行消息格式及合法性校验,如果校验不通过,会丢弃消息,并通知发送端非法报文,统计达到一定数量阀值,断开发送端连接;
校验通过后,根据消息类型编码,进行相关的消息处理流程,一般是生成同一消息类型全局唯一的同步ID,例如90001;
步骤S6、把刚生成同步ID和消息一起存储到数据库表,每个消息类型对应一张消息历史表,如果消息类型是100,表名为MSG_HIS_100,每张表同步ID唯一,存储格式如下;
步骤S7、接着向发送端,发送确认报文ACK,报文如下:
步骤S8、同时,服务端对消息进行下面步骤的分发处理;
步骤S801、接着读取预先配置好的分发规则,为提高性能,一般会提前加载到内存,规则配置数据如下,
步骤S802、根据消息的发送方终端A,得到其所在域1,在同一个域的消息是互通的,所以消息可发给同在域1的终端B、终端C。
步骤S803、确定可接收消息的终端列表,如果消息里没有指定接收方的接收终端,那么使用步骤S802得到的同域的终端,如果制定了接收方的接收终端那么使用消息里指定的接收方终端。
步骤S804、获取相关每个终端的消息分发规则配置;
步骤S805、支持的消息类型编码集合用“,”来分割消息类型编码,用“-”表示一段消息编码范围,如数据“100-200,10,11”表示支持100到200的消息编码及消息编码10,20;
步骤S806、发送方内容路由按照||分割每条路由配置,每条路由规则包括[消息类型][匹配内容][终端A,终端B,终端C],表示制定消息类型,包含匹配内容的话,就执行终端过滤,只能发送到指定终端,如果没有配置表示按照域内互通。
步骤S807、根据步骤S803到的终端列表,按照步骤S805和步骤S806的分发规则匹配,得到最终消息需要发送的终端列表,如果匹配列表为空表示消息配置错误,返回系统错误。
步骤S808、根据接收方的用户ID,判断用户正在用哪几个终端登录,获取接收方登录的终端编码,向步骤S807获得的终端列表里并在线的终端发送在线消息,向步骤S807获得的非在线发送提醒消息,比如APNS、或者短信。
步骤S9、接收端接收服务器分发的消息,主要分离线同步消息和在线接收消息;
步骤S901、接收端在线,直接收取在线消息,根据消息类型,查询对应的本地对应消息类型的本地数据库表MSG_HIS_100中的消息表,消息表中如果同步ID存在,说明已经收过该消息,忽略后续处理即可(但是也需要进行步骤S903),如果不存在,存储该消息到消息表并更新该消息类型对应的同步ID。
步骤S902、对比本地同步表MSG_SYNC里对应消息类型的同步ID,如果消息里的同步ID大于MSG_SYNC的同步ID,更新同步ID,小于则结束,如果没有该记录新增一条记录。
步骤S903、返回确认报文ACK给服务端,报文如下:
步骤S904、服务端收到在线客户端ACK报文,说明服务端消息分发结束。
步骤S905、如果服务端在分发在线消息的时候,如果有一个终端在指定的时间内,没有返回确认报文ACK,服务端记录分发错误的记录到分发错误表MSG_SEND_ERROR,结构如下:
步骤S906、如果接收终端离线,终端启动时,先进行连接登录。
步骤S907、登录成功后,同步的主要流程如图2所示,获取终端本地同步表MSG_SYNC里的消息类型及对应的消息同步ID。
步骤S908、终端分别发送每个消息类型的同步确认报文SYNC_CHK,内容包括:
步骤S909、服务端收到同步确认报文SYNC_CHK报文后,查询服务端的数据库表MSG_HIS_100、本地同步表MSG_SYNC及分发错误表MSG_SEND_ERROR里对应用户ID及消息类型的最小同步ID,再跟接收到的报文里的同步ID对比,如果报文里的同步ID小,取报文里的同步ID,反之,取这三个表(数据库表MSG_HIS_100、本地同步表MSG_SYNC及分发错误表MSG_SEND_ERROR)里的最小同步ID并再减1,设置同步ID到SYNC_CHK_RST报文返回给终端,报文如下:
步骤S910、终端收到同步结果报文SYNC_CHK_RST的消息类型及同步ID后,更新MSG_SYNC表里对应消息类型的本地同步ID。
步骤S911、向服务端发送同步请求报文SYNC_REQ,同步请求报文SYNC_REQ如下:
步骤S912、服务端收到SYNC_REQ报文后,查询服务端的数据库表MSG_HIS_100,返回满足下述条件的指定条数的消息记录,条件为:1)与接收方用户ID相等,2)与接收方终端编码相等或者接收方终端编码为空,3)同步ID大于报文里的同步ID;
步骤S913、服务器对获得的消息记录,进行步骤S802-步骤S806的分发规则过滤,返回匹配的离线记录,并设置到返回报文SYNC_RESP里,一次离线同步处理结束。
步骤S914、接收端收到SYNC_RESP后,对离线记录里的历史消息,逐条进行下述处理:接收端根据消息类型,查询本地对应消息类型的本地数据库消息表,表中如果同步ID存在,说明已经收过该消息,该条历史消息处理结束;如果不存在,则存储该消息到消息表。
步骤S915、获取返回报文里历史消息的最大的同步ID,跟本地表MSG_SYNC中该消息类型的同步ID对比,如果消息里的最大同步ID大于表里的同步ID,更新MSG_SYNC该消息类型对应的同步ID,反之结束,如果MSG_SYNC没有该消息类型的记录,则新增一条记录;
步骤S916、终端重复步骤S911-步骤S915,直至SYNC_RESP,没有返回历史记录为止。
Claims (8)
1.一种多终端消息同步和隔离即时通讯方法,其特征在于,包括:
步骤S1用户通过发送端进行登录校验,与服务器建立连接;
步骤S2发送端将消息发送给服务器,所述消息包括消息ID、消息类型编码、发送方用户ID、发送方终端编码、接收方用户ID、接收方终端编码以及消息内容;
步骤S3服务器对接收到的消息进行消息格式及合法性校验;校验通过后,根据消息类型编码,生成同一消息类型全局唯一的同步ID;
步骤S4服务器把生成同步ID和消息一起存储到数据库表MSG_HIS中,每个消息类型对应一张消息历史表;
步骤S5服务器向发送端发送确认报文ACK,确认报文ACK里返回消息ID对应的同步ID,发送端把收到同步ID更新到刚才发送的消息中,并一起存储到本地;同时,服务器根据消息类型、消息内容和预先配置好的分发规则进行过滤分发处理;
步骤S6接收端接收服务器分发的消息,主要分在线接收消息和离线同步消息;
若接收端在线,直接收取服务端推送的在线消息,并返回确认报文ACK给服务端,服务端收到确认报文ACK,说明服务端消息分发结束;
若接收端离线,服务器对分发的消息进行离线存储处理,等接收端登录后,再根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息;
其中所述步骤S6中,根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息,具体如下:
步骤S601接收端获取本地同步表MSG_SYNC里的消息类型及对应的消息同步ID;
步骤S602接收端分别发送每个消息类型的同步确认报文SYNC_CHK,所述同步确认报文SYNC_CHK包括消息ID、消息类型编码、用户ID、请求同步消息类型和同步ID;
步骤S603服务端收到同步确认报文SYNC_CHK后,查询服务端的数据库表MSG_HIS、同步表MSG_SYNC及分发错误表MSG_SEND_ERROR里对应用户ID及消息类型的最小同步ID,再跟接收到的报文里的同步ID对比,如果报文里的同步ID小,取报文里的同步ID,反之则取最小同步ID并再减1,设置同步ID到同步结果报文SYNC_CHK_RST里,返回同步结果给接收端,所述同步结果报文SYNC_CHK_RST包括消息ID、消息类型编码、请求同步消息类型和同步ID;
步骤S604接收端收到同步结果报文SYNC_CHK_RST的消息类型及同步ID后,更新本地同步表MSG_SYNC里对应消息类型的本地同步ID;
步骤S605接收端向服务端发送同步请求报文SYNC_REQ,所述同步请求报文SYNC_REQ包括消息ID、消息类型编码、用户ID、请求同步消息类型和本地同步ID;
步骤S606服务端收到同步请求报文SYNC_REQ后,查询服务端的数据库表MSG_HIS,返回满足下述条件的指定条数的消息记录,条件为:1)与接收方用户ID相等,2)与接收方终端编码相等或者接收方终端编码为空,3)同步ID大于报文里的同步ID;
步骤S607服务器对获得的消息记录,进行过滤分发处理,返回匹配的离线记录,并设置到返回报文SYNC_RESP里,一次离线同步处理结束;
步骤S608接收端收到SYNC_RESP后,对离线记录里的历史消息,逐条进行下述处理:接收端根据消息类型,查询本地对应消息类型的本地数据库消息表,表中如果同步ID存在,说明已经收过该消息,该条历史消息处理结束;如果不存在,则存储该消息到消息表;
步骤S609获取返回报文里历史消息的最大的同步ID,跟本地表MSG_SYNC中该消息类型的同步ID对比,如果消息里的最大同步ID大于表里的同步ID,更新MSG_SYNC该消息类型对应的同步ID,反之结束,如果MSG_SYNC没有该消息类型的记录,则新增一条记录;
步骤S610接收端重复步骤S605-步骤S609,直至返回报文SYNC_RESP,没有返回历史记录为止。
2.根据权利要求1所述的一种多终端消息同步和隔离即时通讯方法,其特征在于,所述步骤S1具体如下:
用户在发送端发送消息前,必须先跟服务端建立TCP连接,并向服务端发送消息类型为登录的消息,进行用户登录操作;
服务端收到登录报文后,校验登录报文的用户登录信息,如果校验通过,记录发送端登录信息,并返回登录成功报文;
发送端收到登录成功报文后,表示用户在发送端登录成功,后续发送的消息的发送方为该用户的用户ID,并给与该发送端一个终端编码。
3.根据权利要求1所述的一种多终端消息同步和隔离即时通讯方法,其特征在于,所述服务器对接收到的消息进行消息格式及合法性校验,如果校验不通过,会丢弃消息,并通知发送端非法报文,统计达到一定数量阀值,断开与发送端的连接。
4.根据权利要求1所述的一种多终端消息同步和隔离即时通讯方法,其特征在于,所述预先配置好的分发规则如下:针对发送端,根据消息报文格式里是否有指定用户的接收端,若有,则发送给指定用户终端,若无,则发送给用户所在的所有接收端;针对服务器,1)若接收端和消息类型不在同一个域,则表示这个消息不能与该接收端互通;2)根据某一消息类型的消息数据内容里的匹配内容来配置消息的路由规则。
5.根据权利要求1所述的一种多终端消息同步和隔离即时通讯方法,其特征在于,所述步骤S6中,若接收端在线,直接收取服务端推送的在线消息,根据消息类型,查询本地对应消息类型的本地数据库表中的消息表,消息表中如果同步ID存在,说明已经收过该消息,处理结束;如果不存在,则存储该消息到消息表并更新该消息类型对应的同步ID,对比本地同步表MSG_SYNC里对应消息类型的同步ID,如果消息里的同步ID大于MSG_SYNC的同步ID,更新同步ID,小于则结束,如果没有该同步ID对应的记录新增一条记录。
6.根据权利要求1所述的一种多终端消息同步和隔离即时通讯方法,其特征在于,如果服务端在分发在线消息的时候,如果有一个接收端在指定的时间内,没有返回确认报文ACK,服务端记录分发错误的记录到分发错误表MSG_SEND_ERROR。
7.一种多终端消息同步和隔离的即时通讯系统,其特征在于,包括:
发送端,所述发送端包括:
登录连接请求模块,用于向服务端发送消息类型为登录的消息,进行用户登录操作;
消息发送模块,用于将消息发送给服务器,所述消息包括消息ID、消息类型编码、发送方用户ID、发送方终端编码、接收方用户ID、接收方终端编码以及消息内容;
本地存储模块,用于把收到同步ID更新到刚才发送的消息中,并一起存储到本地;
服务器,包括:
接收连接模块,用于接收登录连接请求模块发送的登录报文后,校验登录报文的用户登录信息,如果校验通过,记录发送端登录信息,并返回登录成功报文给登录连接请求模块;
消息同步模块,用于对接收到的消息进行消息格式及合法性校验;校验通过后,根据消息类型编码,生成同一消息类型全局唯一的同步ID;把生成同步ID和消息一起存储到数据库表MSG_HIS中,每个消息类型对应一张消息历史表;
消息分发处理模块,用于向发送端发送确认报文ACK,确认报文ACK里返回消息ID对应的同步ID,同时,根据消息类型、消息内容和预先配置好的分发规则进行过滤分发处理;
离线存储模块,用于当接收端处于离线时对分发的消息进行离线存储处理;
接收端,包括:
在线接收消息模块,用于直接收取服务端推送的在线消息,并返回确认报文ACK给服务端,服务端收到确认报文ACK,说明服务端消息分发结束;
登录连接请求模块,用于向服务端发送消息类型为登录的消息,进行用户登录操作;
离线同步消息模块,用于等接收端登录后,再根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息;
其中根据接收端本地存储的消息类型对应的消息同步ID,进行消息同步确认及同步处理,拉取离线消息,具体如下:
步骤S601接收端获取本地同步表MSG_SYNC里的消息类型及对应的消息同步ID;
步骤S602接收端分别发送每个消息类型的同步确认报文SYNC_CHK,所述同步确认报文SYNC_CHK包括消息ID、消息类型编码、用户ID、请求同步消息类型和同步ID;
步骤S603服务端收到同步确认报文SYNC_CHK后,查询服务端的数据库表MSG_HIS、同步表MSG_SYNC及分发错误表MSG_SEND_ERROR里对应用户ID及消息类型的最小同步ID,再跟接收到的报文里的同步ID对比,如果报文里的同步ID小,取报文里的同步ID,反之则取最小同步ID并再减1,设置同步ID到同步结果报文SYNC_CHK_RST里,返回同步结果给接收端,所述同步结果报文SYNC_CHK_RST包括消息ID、消息类型编码、请求同步消息类型和同步ID;
步骤S604接收端收到同步结果报文SYNC_CHK_RST的消息类型及同步ID后,更新本地同步表MSG_SYNC里对应消息类型的本地同步ID;
步骤S605接收端向服务端发送同步请求报文SYNC_REQ,所述同步请求报文SYNC_REQ包括消息ID、消息类型编码、用户ID、请求同步消息类型和本地同步ID;
步骤S606服务端收到同步请求报文SYNC_REQ后,查询服务端的数据库表MSG_HIS,返回满足下述条件的指定条数的消息记录,条件为:1)与接收方用户ID相等,2)与接收方终端编码相等或者接收方终端编码为空,3)同步ID大于报文里的同步ID;
步骤S607服务器对获得的消息记录,进行过滤分发处理,返回匹配的离线记录,并设置到返回报文SYNC_RESP里,一次离线同步处理结束;
步骤S608接收端收到SYNC_RESP后,对离线记录里的历史消息,逐条进行下述处理:接收端根据消息类型,查询本地对应消息类型的本地数据库消息表,表中如果同步ID存在,说明已经收过该消息,该条历史消息处理结束;如果不存在,则存储该消息到消息表;
步骤S609获取返回报文里历史消息的最大的同步ID,跟本地表MSG_SYNC中该消息类型的同步ID对比,如果消息里的最大同步ID大于表里的同步ID,更新MSG_SYNC该消息类型对应的同步ID,反之结束,如果MSG_SYNC没有该消息类型的记录,则新增一条记录;
步骤S610接收端重复步骤S605-步骤S609,直至返回报文SYNC_RESP,没有返回历史记录为止。
8.根据权利要求7所述的一种多终端消息同步和隔离的即时通讯系统,其特征在于,所述预先配置好的分发规则如下:针对发送端,根据消息报文格式里是否有指定用户的接收端,若有,则发送给指定用户终端,若无,则发送给用户所在的所有接收端;针对服务器,1)若接收端和消息类型不在同一个域,则表示这个消息不能与该接收端互通;2)根据某一消息类型的消息数据内容里的匹配内容来配置消息的路由规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810272438.3A CN108667899B (zh) | 2018-03-29 | 2018-03-29 | 多终端消息同步和隔离即时通讯方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810272438.3A CN108667899B (zh) | 2018-03-29 | 2018-03-29 | 多终端消息同步和隔离即时通讯方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108667899A CN108667899A (zh) | 2018-10-16 |
CN108667899B true CN108667899B (zh) | 2021-04-20 |
Family
ID=63782135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810272438.3A Active CN108667899B (zh) | 2018-03-29 | 2018-03-29 | 多终端消息同步和隔离即时通讯方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108667899B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109347973B (zh) * | 2018-11-15 | 2022-04-26 | 北京酷我科技有限公司 | 一种客户端即时通讯方法及系统 |
CN109617792A (zh) * | 2019-01-17 | 2019-04-12 | 北京云中融信网络科技有限公司 | 即时通讯系统及广播消息分发方法 |
CN109922046B (zh) * | 2019-01-30 | 2021-06-29 | 广东腾一科技有限公司 | 一种数据收发系统及方法 |
CN110138652B (zh) * | 2019-05-21 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 一种会话更新方法、装置及客户端设备 |
CN110391974A (zh) * | 2019-08-01 | 2019-10-29 | 北京云中融信网络科技有限公司 | 一种消息同步方法、服务端、终端及系统 |
CN112118171A (zh) * | 2020-09-04 | 2020-12-22 | 完美世界控股集团有限公司 | 消息互通系统、方法、装置、计算机设备及可读存储介质 |
CN112491691A (zh) * | 2020-11-02 | 2021-03-12 | 南京京恒信息技术有限公司 | 多终端消息同步和隔离即时通讯方法及系统 |
CN112637314A (zh) * | 2020-12-17 | 2021-04-09 | 深圳市和讯华谷信息技术有限公司 | 消息同步方法、系统、第一终端设备、服务端和介质 |
CN113067882A (zh) * | 2021-03-31 | 2021-07-02 | 建信金融科技有限责任公司 | 一种消息处理方法、装置、电子设备及介质 |
CN113452770B (zh) * | 2021-06-24 | 2023-05-02 | 未鲲(上海)科技服务有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN114513481A (zh) * | 2022-01-21 | 2022-05-17 | 浪潮软件股份有限公司 | 基于即时通信系统的多端消息同步方法及系统 |
CN115277618B (zh) * | 2022-07-25 | 2024-01-30 | 每日互动股份有限公司 | 一种消息发送的数据处理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
CN107786425A (zh) * | 2016-09-12 | 2018-03-09 | 平安科技(深圳)有限公司 | 离线信息处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104104575B (zh) * | 2013-04-03 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 一种即时通讯群的通讯方法及系统 |
CN103368827B (zh) * | 2013-07-01 | 2016-04-06 | 中国农业大学 | 基于vc++的局域网即时通讯系统和方法 |
-
2018
- 2018-03-29 CN CN201810272438.3A patent/CN108667899B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786425A (zh) * | 2016-09-12 | 2018-03-09 | 平安科技(深圳)有限公司 | 离线信息处理方法和装置 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于XMPP协议的网站即时通信系统设计与实现;陈秋平;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160131;第1139-109页,第2-4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN108667899A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667899B (zh) | 多终端消息同步和隔离即时通讯方法及系统 | |
CN101257375B (zh) | 实现多终端的消息同步的方法及装置 | |
CN103069755B (zh) | 使用多个客户端实例的即时消息传送的方法和系统 | |
CN110719221B (zh) | 即时通信方法、装置、设备及存储介质 | |
JP7050354B2 (ja) | 非同期メッセージシステムにおける単一アカウントに対する複数プロファイルを管理する方法、システムおよびコンピュータ読み取り可能媒体 | |
CN105812235B (zh) | 消息处理方法、装置及系统 | |
CN102395115A (zh) | 用于在融合ip消息业务中管理消息线程的方法和系统 | |
KR100584316B1 (ko) | 단말장치와 서버간의 프레전스 정보 데이터 동기화를 위한시스템 및 방법 | |
CN101729441B (zh) | 更新提醒方法、系统、更新源服务器及接入服务器 | |
CN110391974A (zh) | 一种消息同步方法、服务端、终端及系统 | |
WO2012109826A1 (zh) | 一种社交网络的实现方法及系统 | |
CN109462640B (zh) | 一种元数据同步方法、数据端、交互系统及介质 | |
CN111431790B (zh) | 一种即时通讯方法、装置、系统及存储介质 | |
CN104753877A (zh) | 一种群组通信方法及装置 | |
CN102685101A (zh) | 社交网络上的代理通信 | |
CN103563314A (zh) | 用于被动通信服务的系统和方法 | |
CN112787908A (zh) | 一种会话消息传输方法、装置、电子设备及存储介质 | |
CN111277483A (zh) | 一种多端消息的同步方法、服务器及可存储介质 | |
EP2789122B1 (en) | Apparatus and method for inviting subscription to contact information | |
CN103973648A (zh) | 应用数据推送方法、装置及系统 | |
CN101166129A (zh) | 获取应用服务器标识信息的方法、终端、设备和系统 | |
JPH10334027A (ja) | クライアント・サーバシステム | |
CN103167424A (zh) | 一种添加联络人的方法和装置 | |
US20220318760A1 (en) | Updating participants on meeting invites across calendar systems | |
CN101394365A (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 |