CN109660584A - 一种客户端与服务器建立长连接的方法及通信方法与通信*** - Google Patents
一种客户端与服务器建立长连接的方法及通信方法与通信*** Download PDFInfo
- Publication number
- CN109660584A CN109660584A CN201710949296.5A CN201710949296A CN109660584A CN 109660584 A CN109660584 A CN 109660584A CN 201710949296 A CN201710949296 A CN 201710949296A CN 109660584 A CN109660584 A CN 109660584A
- Authority
- CN
- China
- Prior art keywords
- long connection
- server
- module
- mobile client
- business datum
- 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
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
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Landscapes
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请实施例提供了一种客户端与服务器建立长连接的方法及通信方法与通信***,其中,当所述方法应用于移动客户端时,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;所述方法包括:长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;根据所述业务数据以及对应的同步点信息,生成通知信息;将所述通知信息发送至一个或多个业务处理模块中。本申请实施例基于健壮的长连接通信链路,移动客户端可以随时接收服务器推送的业务数据,提高了长连接服务的可用性。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种通信方法、一种客户端与服务器建立长连接的方法、一种移动客户端、一种服务器、一种客户端与服务器建立长连接的装置以及一种通信***。
背景技术
随着移动终端的普及,移动互联网技术也跟着发展起来,移动互联网是指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动的总称。
在当前的移动互联网解决方案中,大多数情况下,移动互联应用程序的客户端和服务器端是通过HTTP/HTTPS通信,具体来说,客户端发起HTTP/HTTPS请求,服务端返回数据,这种传统的请求应答模式就是典型的短连接,其特征是一次通话建立一次连接,通讯完成就中断连接,工作流程为:连接->传输数据->关闭连接。
然而,上述这种传输方式存在如下缺陷:
(1)实时性不高
因为HTTP/HTTPS连接使用的是“请求—响应”的方式,在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。这种方式的特点是安全性高,但是每次都是先连接再操作,效率比较低,无法满足实时性要求比较高的业务需求。
(2)TCP建立连接的损耗
对于HTTP/HTTPS来说,每次通讯完成就释放TCP连接,下一次HTTP/HTTPS请求到来时,重新建立连接进行数据传输,而每个TCP连接都需要三次握手,造成时间和资源的损耗。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种通信方法、一种客户端与服务器建立长连接的方法和相应的一种移动客户端、一种服务器、一种客户端与服务器建立长连接的装置以及一种通信***。
为了解决上述问题,本申请实施例公开了一种通信方法,应用于移动客户端中,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;所述方法包括:
长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
根据所述业务数据以及对应的同步点信息,生成通知信息;
将所述通知信息发送至一个或多个业务处理模块中。
优选地,在所述长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据的步骤之前,还包括:
生成数据获取请求,所述数据获取请求包括在先同步点信息;
将所述数据获取请求通过长连接通信链路发送至长连接服务器。
优选地,所述数据获取请求包括多个业务处理请求,其中,所述业务处理请求用于对应一种或多种业务数据。
优选地,所述方法还包括:
接收业务处理模块基于所述通知信息返回的数据响应消息,所述数据响应消息用于对长连接服务器中存储的对应的业务数据进行更新处理;
将所述数据响应消息通过长连接通信链路发送至长连接服务器。
优选地,在所述长连接服务模块通过长连接通信链路接收服务器发送的业务数据的步骤之前,还包括:
进行长连接服务初始化;
创建所述移动客户端与长连接服务器之间的Socket连接;
判断所述Socket连接是否建立成功;
若是,则建立所述移动客户端与长连接服务器之间的长连接通信链路;
若否,则执行重试操作。
优选地,所述执行重试操作的步骤包括:
将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述创建所述移动客户端与长连接服务器之间的Socket连接的步骤;
若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
优选地,在所述建立所述移动客户端与长连接服务器之间的长连接通信链路的步骤之后,还包括;
通过所述长连接通信链路向长连接服务器发送设备信息;
接收所述长连接服务器基于所述设备信息返回的设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
优选地,所述方法还包括:
当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
当在第二时间段内没有接收到长连接服务器返回的,针对所述心跳消息的心跳响应消息时,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
优选地,所述进行长连接服务初始化的步骤包括以下所列中的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;或,
添加用户登录状态的监听。
优选地,在所述根据所述业务数据以及对应的同步点信息,生成通知信息的步骤之前,还包括:
存储所述业务数据以及对应的同步点信息。
本申请实施例还公开了一种通信方法,应用于服务器中,所述服务器与移动客户端通过长连接通信链路进行通信;所述方法包括:
通过长连接通信链路接收业务数据;
生成所述业务数据对应的同步点信息;
将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
优选地,在所述将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中的步骤之前,还包括:
在数据中心中存储所述业务数据对应的同步点信息。
优选地,所述方法还包括:
通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
若存在未同步的业务数据,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
优选地,所述方法还包括:
通过所述长连接通信链路接收移动客户端发送的数据响应消息,所述数据响应信息包括移动客户端的业务处理模块获得业务数据后生成的消息;
基于所述数据响应消息,对数据中心的对应数据进行更新处理。
优选地,在所述将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至客户端中的步骤之前,还包括:
通过所述长连接通信链路接收移动客户端发送的设备信息;
基于所述设备信息,生成设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
向移动客户端返回所述设备响应信息。
优选地,所述方法还包括:
通过所述长连接通信链路接收移动客户端发送的心跳消息;
基于所述心跳消息,向移动客户端返回对应的心跳响应消息。
本申请实施例还公开了一种客户端与服务器建立长连接的方法,所述客户端包括移动客户端,所述服务器包括长连接服务器,所述方法包括:
进行长连接服务初始化;
创建所述移动客户端与长连接服务器之间的Socket连接;
判断所述Socket连接是否建立成功;
若是,则建立所述移动客户端与长连接服务器之间的长连接通信链路;
若否,则执行重试操作。
优选地,所述执行重试操作的步骤包括:
将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述创建所述移动客户端与长连接服务器之间的Socket连接的步骤;
若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
优选地,所述进行长连接服务初始化的步骤包括以下所列中的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;或,
添加用户登录状态的监听。
优选地,所述判断所述Socket连接是否建立成功的步骤包括:
读取连接建立的返回值;
根据所述返回值,判断所述Socket连接是否建立成功。
优选地,所述方法还包括:
移动客户端通过所述长连接通信链路向长连接服务器发送设备信息;
若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
优选地,所述方法还包括:
当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
本申请实施例还公开了一种移动客户端,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;
所述长连接服务模块包括:
业务数据接收子模块,用于通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
通知信息生成子模块,用于根据所述业务数据以及对应的同步点信息,生成通知信息;
发送子模块,用于将所述通知信息发送至一个或多个业务处理模块中。
优选地,所述长连接服务模块还包括:
数据获取请求生成子模块,用于生成数据获取请求,所述数据获取请求包括在先同步点信息;
数据获取请求发送子模块,用于将所述数据获取请求通过长连接通信链路发送至长连接服务器。
本申请实施例还公开一种服务器,所述服务器包括长连接服务器,所述长连接服务器与移动客户端通过长连接通信链路进行通信;所述长连接服务器包括:
业务数据接收模块,用于通过长连接通信链路接收业务数据;
同步点生成模块,用于生成所述业务数据对应的同步点信息;
业务数据发送模块,用于将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
优选地,所述服务器还包括:
同步点存储模块,用于在数据中心中存储所述业务数据对应的同步点信息。
优选地,所述服务器还包括:
数据获取请求接收模块,用于通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
同步判断模块,用于基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
未同步数据发送模块,用于在存在未同步的业务数据时,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
本申请实施例还公开一种客户端与服务器建立长连接的装置,所述客户端包括移动客户端,所述服务器包括长连接服务器,所述装置包括:
初始化模块,用于进行长连接服务初始化;
Socket连接创建模块,用于创建所述移动客户端与长连接服务器之间的Socket连接;
判断模块,用于判断所述Socket连接是否建立成功,若是,则调用长连接通信链路创建模块,若否,则调用重试模块;
长连接通信链路创建模块,用于建立所述移动客户端与长连接服务器之间的长连接通信链路;
重试模块,用于执行重试操作。
优选地,所述重试模块包括:
重连次数操作子模块,用于将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
重试子模块,用于若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,调用Socket连接创建模块;
服务判定子模块,用于若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
优选地,所述装置还包括:
设备信息发送模块,用于通过所述长连接通信链路向长连接服务器发送设备信息;
第一长连接断开判定模块,用于若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并调用重试模块。
优选地,所述装置还包括:
心跳消息发送模块,用于当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
第二长连接断开判定模块,用于当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并调用重试模块。
本申请实施例还公开了一种通信***,包括移动客户端、业务服务器、长连接服务器,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与所述长连接服务器通过长连接通信链路进行通信;
所述业务服务器用于,向长连接服务器发送业务数据;
所述长连接服务器用于,生成所述业务数据对应的同步点信息,并将所述业务数据以及对应的同步点信息通过长连接通信链路发送至长连接服务模块中;
所述长连接服务模块用于,根据所述业务数据以及对应的同步点信息,生成通知信息,以及,将所述通知信息发送至一个或多个业务处理模块中;
所述业务处理模块用于,从所述通知信息中提取业务数据,并对所述业务数据进行业务处理。
优选地,所述业务处理模块通过向所述长连接服务模块进行注册,以使用长连接服务。
优选地,所述通信***还包括:
长连接建立模块,用于建立所述长连接服务器与所述长连接服务模块之间的长连接通信链路。
本申请实施例还公开一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述的方法。
本申请实施例还公开一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行上述的方法。
本申请实施例包括以下优点:
在本申请实施例中,基于健壮的长连接通信链路,移动客户端可以随时接收服务器推送的业务数据,提高了长连接服务的可用性。
本申请实施例还可以通过同步点信息对该业务数据进行移动客户端与服务器的同步管理,保证了服务器与移动客户端之间的数据的同步。
附图说明
图1是本申请的一种通信***实施例的结构框图;
图2是本申请的一种通信方法实施例一的步骤流程图;
图3是本申请的一种通信方法实施例二的步骤流程图;
图4是本申请的一种通信方法实施例三的步骤流程图;
图5是本申请的一种客户端与服务器建立长连接的方法实施例的步骤流程图;
图6是本申请的一种移动客户端实施例的结构框图;
图7是本申请的一种服务器实施例的结构框图;
图8是本申请的一种客户端与服务器建立长连接的装置实施例的结构框图;
图9是本申请的一种***实施例的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种通信***实施例的结构框图,该通信***至少可以包括移动客户端、业务服务器、长连接服务器。其中,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与所述长连接服务器通过长连接通信链路进行通信。
所述业务服务器用于,向长连接服务器发送业务数据;
所述长连接服务器用于,生成所述业务数据对应的同步点信息,并将所述业务数据以及对应的同步点信息通过长连接通信链路发送至长连接服务模块中;
所述长连接服务模块用于,根据所述业务数据以及对应的同步点信息,生成通知信息,以及,将所述通知信息发送至一个或多个业务处理模块中;
所述业务处理模块用于,从所述通知信息中提取业务数据,并对所述业务数据进行业务处理。
具体的,本申请实施例可以应用于移动客户端与服务器的通信中,在本申请实施例中,移动客户端与服务器可以通过长连接通信链路进行通信。在具体实现中,本申请实施例中的服务器可以包括长连接服务器以及业务服务器。其中,长连接服务器和业务服务器可以是共用模块,也可以是分离设置的模块,长连接服务器主要负责跟移动客户端创建和保持Socket连接;业务服务器主要负责处理跟移动客户端所有业务数据的处理。
该移动客户端所属的应用程序可以安装在移动终端中,移动客户端中可以包括长连接服务模块以及业务处理模块,参考图1所示,长连接服务器和移动客户端的长连接服务模块通过Socket长连接通信,在本申请实施例的一种优选实施例中,通信***还可以包括长连接建立模块(图中未示出),该长连接建立模块用于建立所述长连接服务器与所述长连接服务模块之间的长连接通信链路。
客户端的业务处理模块如消息中心、行程和发现等模块通过向所述长连接服务模块进行注册,以使用长连接服务。当有业务需求时,业务服务器可以调用相关接口,将数据推送给长连接服务器,接下来长连接服务器通过Socket长连接将数据推送给长连接服务模块,最后长连接服务模块将数据广播通知各个业务处理模块。
本申请实施例的长连接服务模块是业务服务器和业务客户端(即移动客户端)的桥梁,其功能比较多,例如:在初始化阶段主要是通信链路初始化、业务初始化和长连接的创建;创建连接成功后,主要是用心跳来维护此连接,发送数据时携带每个业务处理模块的同步点信息,这涉及到同步点信息的管理工作;在发送数据前,先做数据的压缩处理,用来减少带宽压力,最后将数据通过读写逻辑发送到socket通道;当收到数据时,首先做解压缩处理,同时将业务数据存储到数据库,通过数据广播通知业务处理模块处理,处理完之后还有存储同步点信息;当建连失败或发送数据失败时,重试机制确保提高长连接服务的可用性。
本申请实施例的长连接服务模块可以被多种业务处理模块使用,例如,该多个业务处理模块可以包括指定客户端中消息盒子模块、发现模块、离线包更新模块、patch包更新模块、开关配置模块等,具体使用情况如下所述:
消息盒子模块,利用长连接通信链路,实时通知用户是否有新消息,。
发现模块,实时通知用户是否有人点赞、评价帖子等。
离线包更新模块,当H5业务功能发生变化时,实时推送给客户端,执行更新操作。
Patch包更新模块,当iOS客户端有线上crash时,实时推送patch包进行更新。
开关配置模块,业务线有很多开关设置,之前是通过发送HTTP请求获取开关配置,本申请实施例可以通过长连接通道实时下发。以下通过各个具体实施例对本申请实施例的通信***的原理进行说明。
参照图2,示出了本申请的一种通信方法实施例一的步骤流程图,本申请实施例可以应用于移动客户端中,该移动客户端与长连接服务器通过长连接通信链路进行通信。
本申请实施例具体可以包括如下步骤:
步骤201,长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
本申请实施例可以应用于长连接服务器基于推送模式,进行数据推送的场景。
该业务数据可以为业务服务器向长连接服务器发送的数据,业务服务器向长连接服务器发送业务数据时可以携带业务标识和/或推送的用户userid等信息。
长连接服务器收到业务数据以后,可以在数据中心中存储该业务数据,并生成基于对应的业务处理模块的同步点信息,关于同步点信息将在下一实施例中进行具体说明。
随后,长连接服务器将该业务数据以及对应的同步点信息添加到推送队列中等待,当轮到这条消息时,通过Socket长连接将数据推送到移动客户端的长连接服务模块。
长连接服务模块接收到数据以后,进行解析,获得业务数据以及对应的同步点信息。
在一种实施方式中,长连接服务模块可以在本地数据库中对该业务数据以及同步点信息进行序列化处理,从而确保数据增量、有序传输。
步骤202,根据所述业务数据以及对应的同步点信息,生成通知信息;
步骤203,将所述通知信息发送至一个或多个业务处理模块中。
序列化工作以后,移动客户端的长连接服务模块可以根据该业务数据生成通知信息,并将该通知信息发送到客户端的业务处理模块,由业务处理模块对业务数据进行后续的处理。
在一种实施方式中,长连接服务模块可以将该通知信息广播到客户端的业务处理模块中。
在本申请实施例中,基于健壮的长连接通信链路,移动客户端可以随时接收长连接服务器推送的业务数据,提高了长连接服务的可用性。
本申请实施例还可以通过同步点信息对该业务数据,进行移动客户端与服务器的数据同步管理,保证了服务器与客户端之间的数据的同步。
考虑到移动终端中网络状态的不稳定,当长连接服务器给用户推送数据时,若用户的移动终端正处于断网状态,这条消息就会丢失。因此为了保证推送数据的到达率,本申请实施例提供了推送和拉取两种工作模式,如果推送数据失败,在拉取模式下用户还可以拿到长连接服务器要推送的数据,这样做可提高数据到达率。
拉取模式发生在每次建立长连接之后,在整个移动客户端生命周期中这种场合特别多,如app首次打开需要建立长连接、app未收到心跳响应消息时会重新执行建立连接操作,因此仍会进入拉取模式。
参照图3,示出了本申请的一种通信方法实施例二的步骤流程图,本申请实施例可以应用于移动客户端中,适于拉取模式的场景,具体可以包括如下步骤:
步骤301,进行长连接服务初始化;
在具体实现中,初始化工作在整个应用程序app的生命周期中可以只执行一次。
在本申请实施例的一种优选实施例中,初始化工作可以包括但不限于如下的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;针对业务处理模块的类型添加对应的数据监听;初始化服务器的信息和/或所述移动客户端对应的应用程序的信息;针对应用程序切换至后台的情况设置监听;针对应用程序从后台切换至前端的情况设置监听;或,添加用户登录状态的监听。
具体的,以下对各种初始化的情况进行说明:
1)创建业务处理模块的类型与回调函数的映射关系。
创建业务处理模块的类型(type)与回调函数的映射关系的过程可以称为业务线初始化,其中,一个type代表一个业务处理模块。
例如,若业务处理模块为消息中心模块,若消息中心模块为了实现实时推送而使用长连接服务时,可以定义type为AT_TRIPWMC_NOTIFY,回调函数类为TRIPMsgCenterRPCSyncService,在该类中实现回调函数处理模块,当有新数据时,长连接服务通过socket长连接通信链路将最新的数据推送到移动客户端,TRIPMsgCenterRPCSyncService的回调函数中就会接收到数据。
2)针对业务处理模块的类型添加对应的数据监听。
当客户端的长连接服务模块通过长连接通道从服务器获取数据后,为了实现将数据传递给业务调用方,此处可以针对每一种type添加数据监听,用于接收数据,因为在1)中是实现了type和回调函数的绑定,这样就可以实现在回调函数中处理接收到的数据。
3)初始化服务器的信息和/或所述移动客户端对应的应用程序的信息。
作为一种示例,服务器的信息可以包括但不限于:服务器地址以及端口号。应用程序的信息可以包括但不限于:应用名称和应用版本。
在本申请实施例中,设置服务器地址可以用于跟服务器通信,设置应用程序的信息可以用于通知服务器跟其通信的移动客户端是哪个应用哪个版本,这样做的目的是让服务器识别出移动客户端的身份信息。
对于socket服务来说,可以设置其端口号为443。
4)针对应用程序切换至后台的情况设置监听。
此处添加App切后台时的监听,以及时检测应用程序切换至后台。
在具体实现中,由于存在针对应用程序切换至后台的情况设置监听,当App切换至后台时,可以首先发送关闭指令通知长连接服务器这条长连接通道要关闭,以减少资源的浪费,然后删除所有数据监听,防止***崩溃crash,这是因为当App切换至后台后,该App会***作***kill掉,此时如果还有数据监听,***容易crash。
5)针对应用程序从后台切换至前端的情况设置监听。
此处添加App唤起到前端时的监听,以及时检测应用程序唤起到前端。在具体实现中,由于存在针对应用程序从后台切换至前端的情况设置监听,当App被再次唤起到前端时,可以重新建立长连接通信链路。
6)添加用户登录状态的监听。
在本申请实施例中,支持按用户ID推送消息,因此,移动客户端需要及时将用户登录与否的相关消息上报给长连接服务器,为此添加用户登录状态的监听。
在具体实现中,由于存在用户登录状态的监听,当用户登录时,移动客户端可以向服务器端发送绑定用户的指令;当用户退出登录时,移动客户端可以向服务端发送解绑指令,从而让服务器端知道当前这条长连接通信链路的移动客户端已经退出登录,不能再按照用户ID去推送消息。
步骤302,创建所述移动客户端与服务器之间的Socket连接;
在具体实现中,可以调用底层API创建Socket,并调用底层API实现数据的发送和接收。
在一种实施方式中,若移动客户端当前所在的***为iOS***,由于iOS***是基于FreeBSD(FreeBSD是一种类UNIX操作***)开发的操作***,在FreeBSD操作***中,BSDSocket完全用C语言实现,并且可以在Objective-C代码中使用,但是这种原生的Socket无法访问iOS操作***自带的网络特性(wifi、蜂窝网络)。在iOS***中如果没有线程访问蜂窝网络,它会自动关闭以节省电量,但是原生的Socket不会自动打开设备的wifi,如果长连接服务是基于原生的Socket,就会出现很大问题。
与Windows***的Socket套接字类似,iOS***提供了CFNetwork进行Socket通信,CFNetwork是一个底层高性能的framework(架构),对BSD socket进行了封装和扩展,提供了跟HTTP/FTP/TCP/DNS服务器通信的功能,Cocoa(Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API)中的Webkit和NSURL都依赖CFNetwork。此外,CFNetwork集成了runloop机制,每一个线程都有自己的run-loop,因此可以把CFNetwork中的事件源加入到run-loop中去处理网络事件,这样做的好处是让开发者在无需考虑多线程的情况下,可以操作网络协议。同时,CFNetwork被集成到iOS***中,可以保持蜂窝网络不会自动关闭,解决了BSD Socket的问题。
在本申请实施例中,可以基于CFNetwork实现长连接服务通信,CFNetwork主要包括两个模块的API:第一个模块是CFSocket,主要功能是构建客户端和服务器的TCP链接,并且将其集成到run-loop中去;第二个模块是CFStream,提供了一种与设备无关的数据交换方,下面对创建Socket和进行读写的关键函数进行介绍。
1、调用底层API创建Socket
第一、创建socket
在具体实现中,CFNetwork提供一个便捷的创建函数CFStreamCreatePairWithSocketToHost,其可以针对给定的主机名与端口创建一对Socket,一个用于读,一个用于写。调用API如下所示:CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,(__bridge CFStringRef)[url host],[[url port]integerValue],&readStream,&writeStream);
其中,url代表长连接服务器的地址,CFNetwork框架负责将主机名转换为IP地址,将端口号转换为网络字节序,readStream代表了用于读取数据的字节流,writeStream代表了用于写数据的字节流。
第二、数据流绑定回调函数
将数据流绑定一个回调函数readSocketCallback,在这个函数中会处理相应的数据,API如下所示:
CFStreamClientContext ctx={0,(__bridge void*)(self),NULL,NULL,NULL};
CFOptionFlags registeredEvent=(kCFStreamEventHasBytesAvailable|kCFStreamEventEndEncountered|kCFStreamEventErrorOccurred|kCFStreamEventOpenCompleted);
CFReadStreamSetClient(readStream,registeredEvents,readSocketCallback,&ctx));
其中,CFReadStreamSetClient表示读取数据流readStream的绑定操作,第一个参数代表产生事件的流,所有用于处理流的每个函数都有一个指向它的应用;第二个参数代表想要接受的流事件,kCFStreamEventHasBytesAvailable代表有可以读取的数据,kCFStreamEventErrorOccurred代表操作出现错误,kCFStreamEventEndEncountered代表到达字节流的末尾,kCFStreamEventOpenCompleted表示Socket被成功打开;第三个参数是绑定的回调函数,作为event被传递进去;第四个参数代表为流装配CFStreamClientContext结构体来创建的上下文指针,指向自己的info对象与回调函数,通常会是一个self引用。
对于写数据流writeStream,CFNetwork提供了如下API:
CFWriteStreamSetClient(writeStream,registeredEvents,writeSocketCallback,& ctx));
其参数定义跟CFReadStreamSetClient类似。
第三、数据流加入runloop(事件管理对象)
将数据流加入runloop后,客户端才会在下一个runloop中分发处理数据流,API如下所示:
CFReadStreamScheduleWithRunLoop(readStream,CFRunLoopGetCurrent(),kCFRunLoopCommonModes);
CFWriteStreamScheduleWithRunLoop(writeStream,CFRunLoopGetCurrent(),kCFRunLoopCommonModes);
其中,CFRunLoopGetCurrent()返回当前线程默认运行循环,runloop运行模式是kCFRunLoopCommonModes。
第四、打开流数据
在使用流数据之前需要调用CFReadStreamOpen打开读取流,调用CFWriteStreamOpen打开写数据流。
第五、启动runloop
调用CFRunLoopRun(),启动runloop,因为在第三点中将读写数据流添加到了runloop中,需要在此步骤中做启动操作。
2、调用底层API实现数据的发送和接收
在上述第二点中,读数据流readStream与回调函数readSocketCallback进行绑定,写数据流writeStream与回调函数writeSocketCallback进行绑定,长连接建立成功以后,客户端要接收数据在函数readSocketCallback中实现,想把数据发送给服务器端需在函数writeSocketCallback中实现。
readSocketCallback函数如下所示:
readSocketCallback(CFReadStreamRef stream,CFStreamEventType event,void*myPtr);
其中,参数stream代表收到的字符流,参数event代表接收的流事件,myPtr代表处理字符流的对象,myPtr参数在上述第二点中调用CFReadStreamSetClient时传入,根据不同的event类型会有不同的处理客户端。
具体的,event值是kCFStreamEventOpenCompleted表示长连通道接被成功建立;event值是kCFStreamEventHasBytesAvailable表示目前有可以读取的数据,接下利用循环,通过不断累加将stream的数据全部读取到本地字符串;event值是kCFStreamEventEndEncountered表示已经读取到字节流的末尾了,需要通知上层模块此次数据已经成功接收了,调用CFReadStreamClose关闭stream,调用CFReadStreamUnscheduleFromRunLoop将stream从runloop中取掉。event值是kCFStreamEventErrorOccurred,表示socket操作失败。writeSocketCallback的处理客户端跟readSocketCallback类似,在此不再赘述。
步骤303,判断所述Socket连接是否建立成功;若是,则执行步骤304,若否,则执行步骤305;
在本申请实施例的一种优选实施例中,步骤303进一步可以包括:读取连接建立的返回值;根据所述返回值,判断所述Socket连接是否建立成功。
具体的,可以通过连接建立的返回值来判断Socket连接是否建立成功,例如,若返回值为kCFStreamEventOpenCompleted,则可以判定底层Socket长连接创建成功;若返回值为kCFStreamEventErrorOccurred,则可以判定底层Socket长连接创建失败。
步骤304,建立所述移动客户端与服务器之间的长连接通信链路;
当判定Socket连接建立成功时,移动客户端和服务器可以通过<IP+端口>在网络协议的TCP层建立长连接通信链路,接下来可以在这条链路上进行数据通信。
步骤305,执行重试操作。
在本申请实施例中,当判定Socket连接建立不成功时,可以执行重试操作。
在本申请实施例的一种优选实施例中,步骤305可以包括如下子步骤:将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述步骤302;若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
在具体实现中,移动终端是通过无线信号跟基站连接,基站将信息转发给长连接服务器,当遇上高楼等障碍物或者切换基站时,长连接很容易断掉,同时,对于长连接服务器而言,每个长连接都会占用一个端口,当负载过多时也容易通信失败,为了避免因网络通信或服务器状况不好而导致长连接服务不可用,本申请实施例可以设置重试机制,并设定最大重试连接数。
最大重试连接数表示最多可以重试的次数,例如,可以设置最大重试连接数为15。
当判定Socket连接建立不成功时,开始重试,将实时重试连接数(第一次重试时,实时重试连接数为最大重试连接数,即实时重试连接数的初始值为预设的最大重试连接数)减一,表示已经浪费了一次重试机会,判断减一后的实时重试连接数是否大于预设连接数门限(例如,数值0),若否,表示重试次数达到了上限值,本次长连接服务不可用,若是,确定延时时长,并按照该延时时长延时后,返回执行步骤302,重新建立socket连接。
在具体实现中,每一次重试的延时时长可以呈现递增的状态,例如第一次延迟2S执行重试,第二次延迟3S执行重试,等等。
此处进行延时的原因是:建连失败的一个重要原因就是服务器过载过高,此时频繁请求,不但得不到响应,反而会加重服务器负担,延时操作可以提高服务器响应的成功率。
步骤306,移动客户端通过所述长连接通信链路向长连接服务器发送设备信息;
在本申请实施例中,移动客户端可以向长连接服务器发送本地设备的设备信息,这样长连接服务器才知道与它建立连接的设备有什么具体特性。
在一种实施方式中,标识设备信息这种类型的数据可以为active消息。
作为本申请实施例的一种优选示例中,移动客户端向长连接服务器发送的设备信息可以包括但不限于:移动客户端所在的操作***、操作***版本、app名称、app版本号、设备标识、协议版本号以及网络状态等。
例如,一种对设备信息的示例如下:
{"osType":"iOS","osversion":"10.2","appName":"ALITRIP","appVer":"8.1.2",
"dId":"ArweOM01VHF4J79C4etS21nSe0SN9M9IEmlP5gdANG1","network":"wifi","linkExtInfo":"ee3633ab346b358cb1da2bd3f1bd6912","linkVersion":"2.0.0","action":"active"},
为了区分不同的数据类型,可以将上述action设置为active,底层可以对数据做压缩与加密处理。
步骤307,判断在第一时间段内是否接收到,所述长连接服务器基于所述设备信息返回的设备响应信息;若是,则执行步骤308及步骤309;若否,则执行步骤305;在本申请实施例中,在向长连接服务器发送active数据以后,可以针对该active数据创建active命令定时器,该active命令定时器可以用于监听发送设备信息后长连接服务器端是否有返回值,该返回值即为设备响应信息,其中,设备响应信息可以用于指示该设备信息对应的业务服务器处于活跃状态。
具体的,active命令定时器的目的是保证有对应的业务服务器处理长连接信息,建立的socket长连接是基于移动客户端和长连接服务器,如果没有对应的业务服务器那么该服务仍然不可用。为此,移动客户端向长连接服务器上传设备信息,同时创建定时器做超时处理,例如,可以将active命令定时器的定时时间设置为10S。
如果在active命令定时器的定时时长内没有收到长连接服务器的返回值,说明长连接已经断掉,此时可以执行步骤305。
需要说明的是,本申请实施例中,active命令定时器只需要执行一次,而不会重复执行,这是因为如果重复执行就会进入死循环,浪费大量cpu资源,建连失败后重试一次如果仍然失败,说明长连接服务器没有对应的业务服务器,服务不可用。
如果在active命令定时器的定时时长内收到长连接服务器的返回值,说明以下两点:一、本地App与长连接服务器创建好了Socket长连接;第二、该App对应的业务服务器处于活跃状态,并且业务服务器已经获得了设备的设备信息。
当active命令定时器的定时时长内收到长连接服务器的返回值,可以将active命令定时器置为nil(nil是一个对象值,如果要把一个对象设置为空的时候就用nil)。
在具体实现中,移动客户端可以在回调函数readSocketCallback(CFReadStreamRef stream,CFStreamEventType event,void*myPtr)中确定设备响应信息,event值是kCFStreamEventEndEncountered表示完整地收到一条信息,先经过解压缩,然后数据解析,区分开协议头和消息体,最后移动客户端得到如下返回数据:
{"action":"active","connnectCode":
"WIHJc2BxYcDAHTxtEbqYAK","keepLiveTime":"240"},
其中action字段表示消息类型,connnectCode是由长连接服务器端生成,用于标识设备和长连接的唯一字段,长连接服务器端会将长连接和设备信息建立映射表,后续移动客户端发送的消息需要携带这个值,方便长连接服务器识别客户端的身份,keepLiveTime代表心跳周期。
在本申请实施例中,移动客户端还可以获取用户登录状态信息,并将该用户登录状态信息发送至长连接服务器,以进行绑定或解绑操作。
具体的,若移动客户端处于登录状态,可以向长连接服务器发送bind命令,例如,具体命令如下所示:
{"connnectCode":"WIHJc2BxYcDAHTxtEbqYAK","action":"bind","sessionId":"3c008beb359660009e459c7bbaf6a721"},
其中,connnectCode是返回值中用于标识设备和长连接的唯一字段,action值为bind,用于区分不同的上行消息,sessionId用于标识用户userId,当长连接服务器收到这条命令后就知道设备对应的用户信息,这样长连接服务器就可以针对不同的用户推送不同的内容。
此外,由于在长连接服务初始化时,添加了用户状态的监听,当用户状态由未登录变成已登录状态时就要通知长连接服务器,发送bind命令,当用户状态由已登录变成未登录时,发送unbind解绑命令,通知长连接服务器该设备处于未登录状态,对于按userId推送的内容不能发给本设备。
例如,unbind命令的格式为:
{"connnectCode":"WIHJc2BxYcDAHTxtEbqYAK","action":"unbind",
"sessionId":"3c008beb359660009e459c7bbaf6a721"},action为unbind,用于区分不同的命令。
对于bind/unbind消息,可以创建状态status定时器,在超时时间内没有收到响应时,会重新发送此类消息,而不是重新创建Socket连接。
在本申请实施例中,当监听到移动客户端切换到后台时,移动客户端可以向长连接服务器发送action值为close的消息。这类消息是用于通知长连接服务器当前设备要断掉长连接,长连接服务器就可以把这个资源分配给其他设备,充分提供资源的利用率。
步骤308,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息,当在第二预设时间段内没有接收到长连接服务器返回的,针对所述心跳消息的心跳响应消息时,返回执行步骤305;
在具体实现中,建立好的长连接通信链路随时可能断掉,因此,本申请实施例可以采用心跳包维护长连接通道。
具体的,可以创建心跳定时器heratTimer,每隔一个心跳周期keepLiveTime给长连接服务器发送心跳消息,若超时没有收到长连接服务器针对该心跳消息的响应值,就会执行步骤305,以重新建立socket连接,这样做的目的是用来保证跟长连接服务器的长连接通道保持连接。
在具体实现中,可以由长连接服务器设置心跳周期,移动客户端可以在回调函数中状态值kCFStreamEventEndEncountered中解析出心跳周期。
例如,移动客户端在回调函数中状态值kCFStreamEventEndEncountered表示完整地收到一条信息,先经过解压缩,然后数据解析,区分开协议头和消息体,最后客户端得到如下返回数据{"action":"active","connnectCode":
"WIHJc2BxYcDAHTxtEbqYAK","keepLiveTime":"240"},其中,keepLiveTime代表心跳周期240S。
在实际中,长连接服务器可以根据网络状态设置心跳周期,若设备处于wifi状态,心跳周期可以设置得较长,例如,可以设置为240S;若设备处于4G/3G,周期设置可以短一些,例如,可以设置为180S;若设备处于弱网状态,值可以更小,例如,可以设置为120S;即网络状态越好,长连接断掉的可能性越小,心跳周期可以越长,周期约长越能够减少资源的浪费。
本申请实施例的这种心跳周期的设置方案,既可以高效地利用CPU***资源,同时具有广泛的灵活性,因为服务器端可随时修改。
在本申请实施例中,心跳消息没有特殊的业务逻辑,只是表示一种消息体,为了减少传输的数据量,可以用特定数量的字节表示。
例如,心跳消息可以用15个字节表示为:04030000 00000030 30303030 303030。
同时,还可以创建超时定时器heartbeatTimeoutTimer,用于监控发送心跳消息后的第二时间段内是否收到心跳响应消息。
heartbeatTimeoutTimer设定的第二时间段,在wifi状态下可以设置长一些,例如,设置为15S,在其他状态下可以设置短一些,例如,设置为10S。
若在第二时间段内没有收到心跳响应消息,则可以进入到步骤305,以重新创建Socket链接,若在第二时间段内收到心跳响应消息,说明底层长连接保持良好,不需要再重新创建,此时,可以将heartbeatTimeoutTimer定时器置为nil,让该定时任务失效。
步骤309,生成数据获取请求,并将所述数据获取请求通过长连接通信链路发送至长连接服务器,其中,所述数据获取请求包括在先同步点信息,继续执行步骤310;
每次当移动客户端收到active消息的返回值时,进入数据拉取模式,此时,移动客户端可以生成数据获取请求(pull消息),并向长连接服务器发送pull消息,该pull消息可以包括在先同步点信息,目的是告诉长连接服务器,本地客户端消息同步的进度。
在本申请实施例中,该数据获取请求可以包括多个业务处理请求,其中,每个业务处理请求用于对应一种或多种业务数据。也就是说,该数据获取请求可以为针对不同业务的业务处理请求进行合并后得到的消息,从而减少了请求次数。例如,pull消息可以表示为:
{"action":"pull","sData":[{"type":"AT_PUSH_RC","sKey":0},{"type":"AT_H5_PUSH","sKey":170150112736000001},{"type":"AT_TRAIN_TK","sKey":0},{"type":"AT_DIS_MSG","sKey":0},{"type":"AT_CONTROL_PUSH_DEVICE","sKey":0},{"type":"AT_CONTROL_COMMAND_PUSH_DEVICE","sKey":0}]},其中action为pull,用于区分不同的上行数据,sData是一个包含多个业务处理请求的数组array,每个业务处理请求包含对应的业务线type和同步点skey,如type类型的AT_H5_PUSH,上次同步到170150112736000001,服务器接下来返回的数据是从上一次同步点开始算起,从而实现无差错的数据传输。
本申请实施例可以采用同步机制来进行移动客户端与长连接服务器之间的数据同步,防止数据重复下发或者数据丢失,实现数据有序准确到达。
本申请实施例的同步点信息可以由长连接服务器端的序列号生成器生成,并随着业务数据发送至移动客户端,一个业务处理模块设置有一个同步点信息。
步骤310,通过长连接通信链路接收长连接服务器基于所述数据获取请求返回的,更新的业务数据,所述更新的业务数据包括更新的同步点信息,继续执行步骤311;
具体的,移动客户端向长连接服务器发送的数据获取请求携带每个业务处理模块的在先同步点信息,该在先同步点信息从本地数据库获取。
长连接服务器端可以通过业务标识和同步点信息访问数据中心,因数据中心中保留了该业务线待推送的数据,根据该在先同步点信息可以判断对应的业务处理模块同步的进度,获取该业务线待推送的数据(即更新的业务数据),然后将该待推送的数据和最新的同步点信息通过长连接通道推送给移动客户端长连接服务模块。
步骤311,在本地数据库中存储所述更新的业务数据以及对应的更新的同步点信息,继续执行步骤312;
对于长连接服务端下发的同步点信息,移动客户端需要进行序列化处理,及时将更新的业务数据以及对应的更新的同步点信息保存在本地数据库中,从而确保数据增量、有序传输。
步骤312,基于所述更新的业务数据生成通知信息;将所述通知信息广播至一个或多个业务处理模块中,继续执行步骤313;
序列化工作以后,移动客户端的长连接服务模块可以根据该更新的业务数据生成通知信息,并通过广播的方式将通知信息通知到移动客户端的业务处理模块。
步骤313,接收业务处理模块基于所述通知信息返回的数据响应消息,并将所述数据响应消息发送至长连接服务器。
当业务处理模块收到数据后,可以向长连接服务模块发送一条已成功接收数据的数据响应消息,这条数据响应消息通过底层socket连接最后到达长连接服务器。
在本申请实施例中,该数据响应消息可以包括业务处理模块的信息和同步点信息,用于告知长连接服务器,客户端已接收了到同步点位置的所有数据,长连接服务器可以通知数据中心进行数据的更新update操作,例如,进行一些数据的清理操作。
总的来说,在本申请实施例中,移动客户端的长连接服务模块向长连接服务器发送的消息,可以包括如下五类,用字段action来区分:
第一类、active消息,这类消息用于向长连接服务器发送本地设备相关的设备信息,这样长连接服务器才知道与它建立连接的设备有什么具体特性,action值为active,对于这类信息会创建active定时器做重试处理,在超时时间内没有收到响应,重新创建Socket链接。
第二类、心跳消息,这类消息不需要传递其他数据,数据格式简单。对于这类消息会创建heartbeatTimeoutTimer定时器,用于监控发送心跳消息后是否有响应,在超时时间内没有收到响应,重新创建Socket连接。
第三类、pull消息,这类消息用于通知长连接服务器,一种业务类型的数据更新到哪一步,包含每一个业务线type和同步点skey,action值为pull。
第四类、bind/unbind消息,这类消息是用于通知长连接服务器,移动客户端的登录信息,action值分别为bind/unbind。
第五类、close消息,这类消息是用于通知长连接服务器,当前设备要断掉长连接,当移动客户端要切换到后台时要发送此类消息,action值为close。由于长连接是很耗费服务器资源的,当检测移动客户端要切后台时,可以通知长连接服务器,长连接服务器就可以把这个资源分配给其他设备,充分提供资源的利用率。
对于第三类和第四类消息会创建status定时器,在超时时间内没有收到响应时,会重新发送此类消息,而不是重新去创建Socket连接。
相应的,收到的长连接服务器返回的响应消息也可以分为以下五类,用字段receiveType来区分。
第一类、active响应,对应active消息。
第二类、心跳响应消息,对应心跳消息,当收到这类消息时说明目前长连接处于稳定状态。
第三类、bind/unbind响应,对应bind/unbind消息。
第四类、data响应,当移动客户端发送了pull消息后,收到的data响应包含了所有应该更新的业务类型及详细数据;当业务服务器有新消息下发时,移动客户端收到的也是这种类型的数据,当移动客户端收到这种数据后,先把同步点信息存起来,然后通过广播的方式通知对应的业务进行处理。
基于本申请实施例,可以达到如下有益效果:
1、提供了健壮的长连接通信链路,实现移动客户端和长连接服务器端全双工通信
本申请实施例基于socket创建了一条长连接,但是因基站与移动终端随时可能断链,导致这条长连接很不稳定,本申请实施例利用心跳包实现了移动客户端和长连接服务器端之间稳定可靠的长连接,基于这条socket长连接,双端可以同时传递数据不受干扰,从而实现了全双工通信。
2、实时到达
基于健壮的长连接通道,长连接服务器端可随时将数据推送给客户端,保证了数据到达的实时性,满足了业务需求。
3、推拉结合,保证到达率
基于长连接可实现实时推送数据,但如果此时移动终端和基站的连接断了,那个这个数据肯定无法推送到移动客户端,本申请实施例同时提供了拉取数据模式,当每次跟长连接服务器建立连接之后,首先拉取数据,从长连接服务端拉取该设备未同步的的数据。推拉模式的结合,保证了数据的到达率。
4、重试机制提升服务的可用性
因基站和移动终端的通信链路不稳定,可能出现移动客户端跟长连接服务器的建连失败或断链,或者是移动客户端通过长连接给长连接服务器发送数据失败等现象,这些情况的发生直接导致长连接服务不可用,本申请实施例利用重试机制很好地解决了这种问题,提高了长连接服务的可用性。
5、精准推送
本申请实施例支持按设备信息deviceId或用户标识userId的精准推送,在业务在初始化时,可以指定是按设备推送,还是按用户推送。当用户登录或退出登录都会给长连接服务器发送不同的数据指令,让长连接服务器端知道客户端所处的状态和相关信息,若客户端处于登录状态,长连接服务器就可以下发指定userId的消息。
6、合并业务请求,减少请求次数
因为一次数据推送,可能将所有不同业务的数据一次下发下来,本申请实施例将不同业务的数据进行合并,减少了请求次数。
7、压缩处理,降低流量
在申请实施例中,为了减少通信的数据量,在发送数据时对数据做了压缩处理,当收到数据时,先做解压缩,然后再解析,很好地减少了用户终端的流量。
参照图4,示出了本申请的一种通信方法实施例三的步骤流程图,本申请实施例可以应用于长连接服务器中,所述长连接服务器与移动客户端通过长连接通信链路进行通信;本申请实施例具体可以包括如下步骤:
步骤401,通过长连接通信链路接收业务数据;
步骤402,生成所述业务数据对应的同步点信息;
步骤403,将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
在本申请实施例的一种优选实施例中,在步骤403之前,还可以包括如下步骤:
在数据中心中存储所述业务数据对应的同步点信息。
在本申请实施例的一种优选实施例中,还可以包括如下步骤:
通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
若存在未同步的业务数据,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
在本申请实施例的一种优选实施例中,还可以包括如下步骤:
通过所述长连接通信链路接收移动客户端发送的数据响应消息,所述数据响应信息包括移动客户端的业务处理模块获得业务数据后生成的消息;
基于所述数据响应消息,对数据中心的对应数据进行更新处理。
在本申请实施例的一种优选实施例中,在步骤403之前,还可以包括如下步骤:
通过所述长连接通信链路接收移动客户端发送的设备信息;
基于所述设备信息,生成设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
向移动客户端返回所述设备响应信息。
在本申请实施例的一种优选实施例中,还可以包括如下步骤:
通过所述长连接通信链路接收移动客户端发送的心跳消息;
基于所述心跳消息,向移动客户端返回对应的心跳响应消息。
对于图4的实施例而言,由于其与图2及图3的实施例基本相似,所以描述的比较简单,相关之处参见图2及图3的实施例的部分说明即可。
参照图5,示出了本申请的一种客户端与服务器建立长连接的方法实施例的步骤流程图,其中,所述客户端可以包括移动客户端,所述服务器包括长连接服务器,本申请实施例具体可以包括如下步骤:
步骤501,进行长连接服务初始化;
步骤502,创建所述移动客户端与长连接服务器之间的Socket连接;
步骤503,判断所述Socket连接是否建立成功;若是,则执行步骤504,若否,则执行步骤505;
步骤504,建立所述移动客户端与长连接服务器之间的长连接通信链路;
步骤505,执行重试操作。
在本申请实施例的一种优选实施例中,步骤505进一步可以包括如下子步骤:
将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述步骤502;
若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
在本申请实施例的一种优选实施例中,步骤501进一步可以包括以下所列的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;或,
添加用户登录状态的监听。
在本申请实施例的一种优选实施例中,步骤503进一步可以包括如下子步骤:
读取连接建立的返回值;
根据所述返回值,判断所述Socket连接是否建立成功。
在本申请实施例的一种优选实施例中,还可以包括如下步骤:
移动客户端通过所述长连接通信链路向长连接服务器发送设备信息;
若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
在本申请实施例的一种优选实施例中,还可以包括如下步骤:
当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
对于图5的实施例而言,由于其与图2及图3的实施例基本相似,所以描述的比较简单,相关之处参见图2及图3的实施例的部分说明即可。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图6,示出了本申请的一种移动客户端实施例的结构框图,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;所述所述长连接服务模块具体可以包括如下子模块:
业务数据接收子模块601,用于通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
通知信息生成子模块602,用于根据所述业务数据以及对应的同步点信息,生成通知信息;
发送子模块603,用于将所述通知信息发送至一个或多个业务处理模块中。
在本申请实施例的一种优选实施例中,所述长连接服务模块还可以包括如下模块:
数据获取请求生成子模块,用于生成数据获取请求,所述数据获取请求包括在先同步点信息;
数据获取请求发送子模块,用于将所述数据获取请求通过长连接通信链路发送至长连接服务器。
在本申请实施例的一种优选实施例中,所述数据获取请求包括多个业务处理请求,其中,所述业务处理请求用于对应一种或多种业务数据。
在本申请实施例的一种优选实施例中,所述长连接服务模块还可以包括如下子模块:
数据响应消息接收子模块,用于接收业务处理模块基于所述通知信息返回的数据响应消息,所述数据响应消息用于对长连接服务器中存储的对应的业务数据进行更新处理;
数据响应消息发送子模块,用于将所述数据响应消息发送至长连接服务器。
在本申请实施例的一种优选实施例中,所述长连接服务模块还可以包括如下模块:
初始化子模块,用于进行长连接服务初始化;
Socket连接创建子模块,用于创建所述移动客户端与长连接服务器之间的Socket连接;
判断子模块,用于判断所述Socket连接是否建立成功,若是,则调用长连接通信链路建立子模块,若否,则调用重试子模块;
长连接通信链路创建子模块,用于建立所述移动客户端与长连接服务器之间的长连接通信链路;
重试子模块,用于执行重试操作。
在本申请实施例的一种优选实施例中,所述重试子模块进一步可以包括如下单元:
重连次数操作单元,用于将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
重试子单元,用于若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述创建所述移动客户端与长连接服务器之间的Socket连接的步骤;
服务判定单元,用于若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
在本申请实施例的一种优选实施例中,所述长连接服务模块还可以包括如下子模块:
设备信息发送子模块,用于向长连接服务器发送设备信息;
设备响应信息接收子模块,用于接收所述长连接服务器基于所述设备信息返回的设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
第一长连接断开判定子模块,用于若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
在本申请实施例的一种优选实施例中,所述长连接服务模块还可以包括如下子模块:
心跳消息发送子模块,用于当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
第二长连接断开判定子模块,用于当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并调用重试模块。
在本申请实施例的一种优选实施例中,所述初始化子模块还用于:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;
或,添加用户登录状态的监听。
参照图7,示出了本申请的一种服务器实施例的结构框图,所述服务器包括长连接服务器,所述长连接服务器与移动客户端通过长连接通信链路进行通信;所述长连接服务器可以包括如下模块:
业务数据接收模块701,用于通过长连接通信链路接收业务数据;
同步点生成模块702,用于生成所述业务数据对应的同步点信息;
业务数据发送模块703,用于将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
在本申请实施例的一种优选实施例中,所述服务器还可以包括如下模块:
同步点存储模块,用于在数据中心中存储所述业务数据对应的同步点信息。
在本申请实施例的一种优选实施例中,所述服务器还可以包括如下模块:
数据获取请求接收模块,用于通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
同步判断模块,用于基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
未同步数据发送模块,用于在存在未同步的业务数据时,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
在本申请实施例的一种优选实施例中,所述服务器还可以包括如下模块:
数据响应消息接收模块,用于接收移动客户端发送的数据响应消息,所述数据响应信息包括移动客户端的业务处理模块获得业务数据后生成的消息;
数据更新模块,用于基于所述数据响应消息,对数据中心的对应数据进行更新处理。
在本申请实施例的一种优选实施例中,所述服务器还可以包括如下模块:
设备信息接收模块,用于接收移动客户端发送的设备信息;
设备响应信息生成模块,用于基于所述设备信息,生成设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
设备响应信息发送模块,用于向移动客户端返回所述设备响应信息。
在本申请实施例的一种优选实施例中,所述服务器还可以包括如下模块:
心跳消息接收模块,用于接收移动客户端发送的心跳消息;
心跳响应消息发送模块,用于基于所述心跳消息,向移动客户端返回对应的心跳响应消息。
参照图8,示出了本申请的一种客户端与服务器建立长连接的装置实施例的结构框图,所述客户端包括移动客户端,所述装置可以包括如下模块:
初始化模块801,用于进行长连接服务初始化;
Socket连接创建模块802,用于创建所述移动客户端与长连接服务器之间的Socket连接;
判断模块803,用于判断所述Socket连接是否建立成功,若是,则调用长连接通信链路创建模块804,若否,则调用重试模块805;
长连接通信链路创建模块804,用于建立所述移动客户端与长连接服务器之间的长连接通信链路;
重试模块805,用于执行重试操作。
在本申请实施例的一种优选实施例中,所述重试模块805可以包括如下子模块:
重连次数操作子模块,用于将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
重试子模块,用于若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,调用Socket连接创建模块;
服务判定子模块,用于若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
在本申请实施例的一种优选实施例中,所述初始化模块801还用于:
创建业务处理模块的类型与回调函数的映射关系;
针对每种业务处理模块的类型添加对应的数据监听;
初始化服务器的信息和/或所述业务客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;
或,
添加用户登录状态的监听。
在本申请实施例的一种优选实施例中,所述判断模块803包括如下子模块:
读取连接建立的返回值;
根据所述返回值,判断所述Socket连接是否建立成功。
在本申请实施例的一种优选实施例中,所述装置还可以包括如下模块:
设备信息发送模块,用于向长连接服务器发送设备信息;
第一长连接断开判定模块,用于若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并调用重试模块。
在本申请实施例的一种优选实施例中,所述装置还可以包括如下模块:
心跳消息发送模块,用于当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向服务器发送心跳消息;
第二长连接断开判定模块,用于当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并调用重试模块。
对于移动客户端、服务器及装置实施例而言,由于其与上述方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的***。图9示意性地示出了可被用于实现本公开中所述的各个实施例的示例性***(或装置)900。
对于一个实施例,图9示出了示例性***900,该***具有一个或多个处理器902、被耦合到(一个或多个)处理器902中的至少一个的***控制模块(芯片组)904、被耦合到***控制模块904的***存储器906、被耦合到***控制模块904的非易失性存储器(NVM)/存储设备908、被耦合到***控制模块904的一个或多个输入/输出设备910,以及被耦合到***控制模块906的网络接口912。
处理器902可包括一个或多个单核或多核处理器,处理器902可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,***900能够作为本申请实施例中所述的通信***。
在一些实施例中,***900可包括具有指令的一个或多个计算机可读介质(例如,***存储器906或NVM/存储设备908)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器902。
对于一个实施例,***控制模块904可包括任意适当的接口控制器,以向(一个或多个)处理器902中的至少一个和/或与***控制模块904通信的任意适当的设备或组件提供任意适当的接口。
***控制模块904可包括存储器控制器模块,以向***存储器906提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
***存储器906可被用于例如为***900加载和存储数据和/或指令。对于一个实施例,***存储器906可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,***存储器906可包括双倍数据速率类型四同步动态随机存取存储器(DDR7SDRAM)。
对于一个实施例,***控制模块904可包括一个或多个输入/输出控制器,以向NVM/存储设备908及(一个或多个)输入/输出设备910提供接口。
例如,NVM/存储设备908可被用于存储数据和/或指令。NVM/存储设备908可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备908可包括在物理上作为***900被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备908可通过网络经由(一个或多个)输入/输出设备910进行访问。
(一个或多个)输入/输出设备910可为***900提供接口以与任意其他适当的设备通信,输入/输出设备910可以包括通信组件、音频组件、传感器组件等。网络接口912可为***900提供接口以通过一个或多个网络通信,***900可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器902中的至少一个可与***控制模块904的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器902中的至少一个可与***控制模块904的一个或多个控制器的逻辑封装在一起以形成***级封装(SiP)。对于一个实施例,(一个或多个)处理器902中的至少一个可与***控制模块904的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器902中的至少一个可与***控制模块904的一个或多个控制器的逻辑集成在同一模具上以形成片上***(SoC)。
在各个实施例中,***900可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,***900可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,***900包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中上述方法各个步骤的指令(instructions)。
在一个示例中提供了一种装置,包括:一个或多个处理器;和,其上存储的有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本申请实施例中的上述方法各个步骤的指令(instructions)。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为客户端、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的客户端、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、客户端、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、客户端、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、客户端、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种客户端与服务器建立长连接的方法及通信方法及通信***进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的客户端及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (36)
1.一种通信方法,其特征在于,应用于移动客户端中,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;所述方法包括:
长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
根据所述业务数据以及对应的同步点信息,生成通知信息;
将所述通知信息发送至一个或多个业务处理模块中。
2.根据权利要求1所述的方法,其特征在于,在所述长连接服务模块通过长连接通信链路接收长连接服务器发送的业务数据的步骤之前,还包括:
生成数据获取请求,所述数据获取请求包括在先同步点信息;
将所述数据获取请求通过长连接通信链路发送至长连接服务器。
3.根据权利要求2所述的方法,其特征在于,所述数据获取请求包括多个业务处理请求,其中,所述业务处理请求用于对应一种或多种业务数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
接收业务处理模块基于所述通知信息返回的数据响应消息,所述数据响应消息用于对长连接服务器中存储的对应的业务数据进行更新处理;
将所述数据响应消息通过长连接通信链路发送至长连接服务器。
5.根据权利要求1-3任一项所述的方法,其特征在于,在所述长连接服务模块通过长连接通信链路接收服务器发送的业务数据的步骤之前,还包括:
进行长连接服务初始化;
创建所述移动客户端与长连接服务器之间的Socket连接;
判断所述Socket连接是否建立成功;
若是,则建立所述移动客户端与长连接服务器之间的长连接通信链路;
若否,则执行重试操作。
6.根据权利要求5所述的方法,其特征在于,所述执行重试操作的步骤包括:
将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述创建所述移动客户端与长连接服务器之间的Socket连接的步骤;
若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
7.根据权利要求5所述的方法,其特征在于,在所述建立所述移动客户端与长连接服务器之间的长连接通信链路的步骤之后,还包括;
通过所述长连接通信链路向长连接服务器发送设备信息;
接收所述长连接服务器基于所述设备信息返回的设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
8.根据权利要求7所述的方法,其特征在于,还包括:
当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
当在第二时间段内没有接收到长连接服务器返回的,针对所述心跳消息的心跳响应消息时,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
9.根据权利要求5所述的方法,其特征在于,所述进行长连接服务初始化的步骤包括以下所列中的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;或,
添加用户登录状态的监听。
10.根据权利要求1所述的方法,其特征在于,在所述根据所述业务数据以及对应的同步点信息,生成通知信息的步骤之前,还包括:
存储所述业务数据以及对应的同步点信息。
11.一种通信方法,其特征在于,应用于服务器中,所述服务器与移动客户端通过长连接通信链路进行通信;所述方法包括:
通过长连接通信链路接收业务数据;
生成所述业务数据对应的同步点信息;
将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
12.根据权利要求11所述的方法,其特征在于,在所述将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中的步骤之前,还包括:
在数据中心中存储所述业务数据对应的同步点信息。
13.根据权利要求12所述的方法,其特征在于,还包括:
通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
若存在未同步的业务数据,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
14.根据权利要求12所述的方法,其特征在于,还包括:
通过所述长连接通信链路接收移动客户端发送的数据响应消息,所述数据响应信息包括移动客户端的业务处理模块获得业务数据后生成的消息;
基于所述数据响应消息,对数据中心的对应数据进行更新处理。
15.根据权利要求11-14任一项所述的方法,其特征在于,在所述将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至客户端中的步骤之前,还包括:
通过所述长连接通信链路接收移动客户端发送的设备信息;
基于所述设备信息,生成设备响应信息,所述设备响应信息用于指示所述设备信息对应的业务服务器处于活跃状态;
向移动客户端返回所述设备响应信息。
16.根据权利要求15所述的方法,其特征在于,还包括:
通过所述长连接通信链路接收移动客户端发送的心跳消息;
基于所述心跳消息,向移动客户端返回对应的心跳响应消息。
17.一种客户端与服务器建立长连接的方法,其特征在于,所述客户端包括移动客户端,所述服务器包括长连接服务器,所述方法包括:
进行长连接服务初始化;
创建所述移动客户端与长连接服务器之间的Socket连接;
判断所述Socket连接是否建立成功;
若是,则建立所述移动客户端与长连接服务器之间的长连接通信链路;
若否,则执行重试操作。
18.根据权利要求17所述的方法,其特征在于,所述执行重试操作的步骤包括:
将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,继续执行所述创建所述移动客户端与长连接服务器之间的Socket连接的步骤;
若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
19.根据权利要求17或18所述的方法,其特征在于,所述进行长连接服务初始化的步骤包括以下所列中的一种或结合:
创建业务处理模块的类型与回调函数的映射关系;
针对业务处理模块的类型添加对应的数据监听;
初始化长连接服务器的信息和/或所述移动客户端对应的应用程序的信息;
针对应用程序切换至后台的情况设置监听;
针对应用程序从后台切换至前端的情况设置监听;或,
添加用户登录状态的监听。
20.根据权利要求17所述的方法,其特征在于,所述判断所述Socket连接是否建立成功的步骤包括:
读取连接建立的返回值;
根据所述返回值,判断所述Socket连接是否建立成功。
21.根据权利要求17所述的方法,其特征在于,所述方法还包括:
移动客户端通过所述长连接通信链路向长连接服务器发送设备信息;
若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并继续执行所述执行重试操作的步骤。
23.一种移动客户端,其特征在于,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与长连接服务器通过长连接通信链路进行通信;
所述长连接服务模块包括:
业务数据接收子模块,用于通过长连接通信链路接收长连接服务器发送的业务数据,其中,所述业务数据携带同步点信息;
通知信息生成子模块,用于根据所述业务数据以及对应的同步点信息,生成通知信息;
发送子模块,用于将所述通知信息发送至一个或多个业务处理模块中。
24.根据权利要求23所述的移动客户端,其特征在于,所述长连接服务模块还包括:
数据获取请求生成子模块,用于生成数据获取请求,所述数据获取请求包括在先同步点信息;
数据获取请求发送子模块,用于将所述数据获取请求通过长连接通信链路发送至长连接服务器。
25.一种服务器,其特征在于,所述服务器包括长连接服务器,所述长连接服务器与移动客户端通过长连接通信链路进行通信;所述长连接服务器包括:
业务数据接收模块,用于通过长连接通信链路接收业务数据;
同步点生成模块,用于生成所述业务数据对应的同步点信息;
业务数据发送模块,用于将所述业务数据以及对应的同步点信息通过所述长连接通信链路发送至移动客户端中。
26.根据权利要求25所述的服务器,其特征在于,还包括:
同步点存储模块,用于在数据中心中存储所述业务数据对应的同步点信息。
27.根据权利要求26所述的服务器,其特征在于,还包括:
数据获取请求接收模块,用于通过所述长连接通信链路接收移动客户端发送的数据获取请求,所述数据获取请求包括在先同步点信息;
同步判断模块,用于基于所述在先同步点信息,与所述数据中心中存储的同步点信息进行比较,判断是否存在未同步的业务数据;
未同步数据发送模块,用于在存在未同步的业务数据时,则将所述未同步的业务数据以及最新的同步点信息发送至所述移动客户端。
28.一种客户端与服务器建立长连接的装置,其特征在于,所述客户端包括移动客户端,所述服务器包括长连接服务器,所述装置包括:
初始化模块,用于进行长连接服务初始化;
Socket连接创建模块,用于创建所述移动客户端与长连接服务器之间的Socket连接;
判断模块,用于判断所述Socket连接是否建立成功,若是,则调用长连接通信链路创建模块,若否,则调用重试模块;
长连接通信链路创建模块,用于建立所述移动客户端与长连接服务器之间的长连接通信链路;
重试模块,用于执行重试操作。
29.根据权利要求28所述的装置,其特征在于,所述重试模块包括:
重连次数操作子模块,用于将实时重试连接数减一,其中,所述实时重试连接数的初始值为预设的最大重试连接数;
重试子模块,用于若所述实时重试连接数大于预设连接数门限,则确定延时时长,并按照所述延时时长延时后,调用Socket连接创建模块;
服务判定子模块,用于若所述实时重试连接数小于或等于预设连接数门限,则判定当前长连接服务不可用。
30.根据权利要求28所述的装置,其特征在于,所述装置还包括:
设备信息发送模块,用于通过所述长连接通信链路向长连接服务器发送设备信息;
第一长连接断开判定模块,用于若在第一时间段内没有接收到所述长连接服务器基于所述设备信息,返回的设备响应信息,则判定所述长连接通信链路断开,并调用重试模块。
31.根据权利要求30所述的装置,其特征在于,所述装置还包括:
心跳消息发送模块,用于当接收到所述设备响应信息以后,确定心跳周期,并按照所述心跳周期向长连接服务器发送心跳消息;
第二长连接断开判定模块,用于当在第二时间段内没有接收到针对所述心跳消息返回的心跳响应消息时,则判定所述长连接通信链路断开,并调用重试模块。
32.一种通信***,其特征在于,包括移动客户端、业务服务器、长连接服务器,所述移动客户端包括长连接服务模块以及一个或多个业务处理模块,所述长连接服务模块与所述长连接服务器通过长连接通信链路进行通信;
所述业务服务器用于,向长连接服务器发送业务数据;
所述长连接服务器用于,生成所述业务数据对应的同步点信息,并将所述业务数据以及对应的同步点信息通过长连接通信链路发送至长连接服务模块中;
所述长连接服务模块用于,根据所述业务数据以及对应的同步点信息,生成通知信息,以及,将所述通知信息发送至一个或多个业务处理模块中;
所述业务处理模块用于,从所述通知信息中提取业务数据,并对所述业务数据进行业务处理。
33.根据权利要求32所述的通信***,其特征在于,所述业务处理模块通过向所述长连接服务模块进行注册,以使用长连接服务。
34.根据权利要求32所述的通信***,其特征在于,还包括:
长连接建立模块,用于建立所述长连接服务器与所述长连接服务模块之间的长连接通信链路。
35.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-10和/或11-16一个或多个的通信方法,和/或17-22一个或多个的客户端与服务器建立长连接的方法。
36.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1-10和/或11-16一个或多个的通信方法,和/或17-22一个或多个的客户端与服务器建立长连接的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710949296.5A CN109660584A (zh) | 2017-10-12 | 2017-10-12 | 一种客户端与服务器建立长连接的方法及通信方法与通信*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710949296.5A CN109660584A (zh) | 2017-10-12 | 2017-10-12 | 一种客户端与服务器建立长连接的方法及通信方法与通信*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109660584A true CN109660584A (zh) | 2019-04-19 |
Family
ID=66109042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710949296.5A Pending CN109660584A (zh) | 2017-10-12 | 2017-10-12 | 一种客户端与服务器建立长连接的方法及通信方法与通信*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109660584A (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071981A (zh) * | 2019-04-30 | 2019-07-30 | 广东电网有限责任公司 | 一种无业务数据交换下保持websocket长连接的方法 |
CN110519341A (zh) * | 2019-08-09 | 2019-11-29 | 西藏宁算科技集团有限公司 | 一种基于云计算的防走失方法及*** |
CN110572442A (zh) * | 2019-08-15 | 2019-12-13 | 上海易点时空网络有限公司 | 配置文件路径的方法及*** |
CN110620761A (zh) * | 2019-08-02 | 2019-12-27 | 重庆爱奇艺智能科技有限公司 | 一种实现多人虚拟互动的方法与装置 |
CN110661848A (zh) * | 2019-08-28 | 2020-01-07 | 视联动力信息技术股份有限公司 | 一种基于视联网的消息推送方法、装置、设备和介质 |
CN110753086A (zh) * | 2019-09-12 | 2020-02-04 | 华为技术有限公司 | 应用的心跳唤醒方法及终端设备 |
CN111092939A (zh) * | 2019-12-04 | 2020-05-01 | 深圳市机场股份有限公司 | 基于机位分配的消息处理方法、装置及电子设备 |
CN111262773A (zh) * | 2020-01-21 | 2020-06-09 | 香港乐蜜有限公司 | 一种消息同步方法及数据中心 |
CN111614752A (zh) * | 2020-05-19 | 2020-09-01 | 北京百度网讯科技有限公司 | 用于数据传输的方法和装置 |
CN111669438A (zh) * | 2020-05-27 | 2020-09-15 | 北京百度网讯科技有限公司 | 直播消息传输方法、装置、电子设备及介质 |
CN111726413A (zh) * | 2020-06-28 | 2020-09-29 | 北京百度网讯科技有限公司 | 设备连接方法和装置 |
CN111737029A (zh) * | 2020-06-23 | 2020-10-02 | 中国建设银行股份有限公司 | 一种服务端、数据推送方法、数据推送*** |
CN112019614A (zh) * | 2020-08-25 | 2020-12-01 | 苏州挚途科技有限公司 | 双***之间通信与通信同步的方法、***与处理器 |
CN112181915A (zh) * | 2019-07-03 | 2021-01-05 | 成都华为技术有限公司 | 执行业务的方法、装置、终端和存储介质 |
CN112448978A (zh) * | 2019-08-30 | 2021-03-05 | ***通信集团河北有限公司 | 数据管理方法及*** |
CN112714079A (zh) * | 2020-12-14 | 2021-04-27 | 成都安思科技有限公司 | 一种vpn环境下的目标服务识别方法 |
CN113037834A (zh) * | 2021-03-05 | 2021-06-25 | 中国工商银行股份有限公司 | 基于分布式即时推送的Web页面状态更新方法及装置 |
CN113051139A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种预警信息处理方法、***、服务器和客户端 |
CN113079220A (zh) * | 2021-04-15 | 2021-07-06 | 深圳市万为物联科技有限公司 | 远程控制换电柜中控机的方法 |
CN113127732A (zh) * | 2021-03-23 | 2021-07-16 | 金蝶蝶金云计算有限公司 | 业务数据的获取方法、装置、计算机设备和存储介质 |
CN113420941A (zh) * | 2021-07-16 | 2021-09-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 用户行为的风险预测方法及装置 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113645308A (zh) * | 2021-08-18 | 2021-11-12 | 平安普惠企业管理有限公司 | 移动终端tcp通信、装置、设备及存储介质 |
CN113762677A (zh) * | 2020-10-29 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种业务处理方法和装置 |
CN113836153A (zh) * | 2021-08-16 | 2021-12-24 | 紫光云(南京)数字技术有限公司 | 移动端企业通讯录即时更新方法及*** |
CN113923249A (zh) * | 2021-10-12 | 2022-01-11 | 工银科技有限公司 | 一种高性能网络长连接建立方法及装置 |
CN114222062A (zh) * | 2021-12-13 | 2022-03-22 | 杭州萤石软件有限公司 | 取流方法、低功耗电池设备、客户端、取流***及设备 |
CN115334144A (zh) * | 2022-06-29 | 2022-11-11 | 上海万物新生环保科技集团有限公司 | 一种业务状态变更通知的处理方法、装置及*** |
CN116361038A (zh) * | 2023-06-02 | 2023-06-30 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、***、设备及存储介质 |
CN116708533A (zh) * | 2022-10-31 | 2023-09-05 | 荣耀终端有限公司 | 连接切换方法、服务器停机方法、终端设备和服务器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610225A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 一种同步处理方法、***和装置 |
CN101685523A (zh) * | 2008-09-27 | 2010-03-31 | 北京掌易迅移动软件技术有限责任公司 | 手机端客户业务流程*** |
CN102932352A (zh) * | 2012-11-02 | 2013-02-13 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
CN104820701A (zh) * | 2015-05-11 | 2015-08-05 | 北京瑞星信息技术有限公司 | 数据记录和同步方法及*** |
CN106657174A (zh) * | 2015-10-28 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、更新方法及装置 |
CN106714334A (zh) * | 2016-12-22 | 2017-05-24 | 网易(杭州)网络有限公司 | 一种断线重连方法、装置及*** |
CN106850745A (zh) * | 2016-12-23 | 2017-06-13 | 北京五八信息技术有限公司 | 一种实时同步方法和装置 |
-
2017
- 2017-10-12 CN CN201710949296.5A patent/CN109660584A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610225A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 一种同步处理方法、***和装置 |
CN101685523A (zh) * | 2008-09-27 | 2010-03-31 | 北京掌易迅移动软件技术有限责任公司 | 手机端客户业务流程*** |
CN102932352A (zh) * | 2012-11-02 | 2013-02-13 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
CN104820701A (zh) * | 2015-05-11 | 2015-08-05 | 北京瑞星信息技术有限公司 | 数据记录和同步方法及*** |
CN106657174A (zh) * | 2015-10-28 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、更新方法及装置 |
CN106714334A (zh) * | 2016-12-22 | 2017-05-24 | 网易(杭州)网络有限公司 | 一种断线重连方法、装置及*** |
CN106850745A (zh) * | 2016-12-23 | 2017-06-13 | 北京五八信息技术有限公司 | 一种实时同步方法和装置 |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071981A (zh) * | 2019-04-30 | 2019-07-30 | 广东电网有限责任公司 | 一种无业务数据交换下保持websocket长连接的方法 |
CN112181915A (zh) * | 2019-07-03 | 2021-01-05 | 成都华为技术有限公司 | 执行业务的方法、装置、终端和存储介质 |
CN112181915B (zh) * | 2019-07-03 | 2023-12-08 | 成都华为技术有限公司 | 执行业务的方法、装置、终端和存储介质 |
CN110620761A (zh) * | 2019-08-02 | 2019-12-27 | 重庆爱奇艺智能科技有限公司 | 一种实现多人虚拟互动的方法与装置 |
CN110519341A (zh) * | 2019-08-09 | 2019-11-29 | 西藏宁算科技集团有限公司 | 一种基于云计算的防走失方法及*** |
CN110572442A (zh) * | 2019-08-15 | 2019-12-13 | 上海易点时空网络有限公司 | 配置文件路径的方法及*** |
CN110661848B (zh) * | 2019-08-28 | 2022-02-22 | 视联动力信息技术股份有限公司 | 一种基于视联网的消息推送方法、装置、设备和介质 |
CN110661848A (zh) * | 2019-08-28 | 2020-01-07 | 视联动力信息技术股份有限公司 | 一种基于视联网的消息推送方法、装置、设备和介质 |
CN112448978B (zh) * | 2019-08-30 | 2022-11-29 | ***通信集团河北有限公司 | 数据管理方法及*** |
CN112448978A (zh) * | 2019-08-30 | 2021-03-05 | ***通信集团河北有限公司 | 数据管理方法及*** |
CN110753086A (zh) * | 2019-09-12 | 2020-02-04 | 华为技术有限公司 | 应用的心跳唤醒方法及终端设备 |
CN111092939A (zh) * | 2019-12-04 | 2020-05-01 | 深圳市机场股份有限公司 | 基于机位分配的消息处理方法、装置及电子设备 |
CN111262773A (zh) * | 2020-01-21 | 2020-06-09 | 香港乐蜜有限公司 | 一种消息同步方法及数据中心 |
CN111614752A (zh) * | 2020-05-19 | 2020-09-01 | 北京百度网讯科技有限公司 | 用于数据传输的方法和装置 |
US11750541B2 (en) | 2020-05-27 | 2023-09-05 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method for transmitting live message, apparatus, electronic device and medium |
CN111669438A (zh) * | 2020-05-27 | 2020-09-15 | 北京百度网讯科技有限公司 | 直播消息传输方法、装置、电子设备及介质 |
CN111737029A (zh) * | 2020-06-23 | 2020-10-02 | 中国建设银行股份有限公司 | 一种服务端、数据推送方法、数据推送*** |
CN111726413A (zh) * | 2020-06-28 | 2020-09-29 | 北京百度网讯科技有限公司 | 设备连接方法和装置 |
CN112019614B (zh) * | 2020-08-25 | 2023-02-17 | 苏州挚途科技有限公司 | 双***之间通信与通信同步的方法、***与处理器 |
CN112019614A (zh) * | 2020-08-25 | 2020-12-01 | 苏州挚途科技有限公司 | 双***之间通信与通信同步的方法、***与处理器 |
CN113762677B (zh) * | 2020-10-29 | 2023-11-03 | 北京京东振世信息技术有限公司 | 一种业务处理方法和装置 |
CN113762677A (zh) * | 2020-10-29 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种业务处理方法和装置 |
CN112714079A (zh) * | 2020-12-14 | 2021-04-27 | 成都安思科技有限公司 | 一种vpn环境下的目标服务识别方法 |
CN112714079B (zh) * | 2020-12-14 | 2022-07-12 | 成都安思科技有限公司 | 一种vpn环境下的目标服务识别方法 |
CN113037834A (zh) * | 2021-03-05 | 2021-06-25 | 中国工商银行股份有限公司 | 基于分布式即时推送的Web页面状态更新方法及装置 |
CN113127732B (zh) * | 2021-03-23 | 2024-02-20 | 金蝶蝶金云计算有限公司 | 业务数据的获取方法、装置、计算机设备和存储介质 |
CN113127732A (zh) * | 2021-03-23 | 2021-07-16 | 金蝶蝶金云计算有限公司 | 业务数据的获取方法、装置、计算机设备和存储介质 |
CN113079220B (zh) * | 2021-04-15 | 2022-07-15 | 深圳市万为物联科技有限公司 | 远程控制换电柜中控机的方法 |
CN113079220A (zh) * | 2021-04-15 | 2021-07-06 | 深圳市万为物联科技有限公司 | 远程控制换电柜中控机的方法 |
CN113051139A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种预警信息处理方法、***、服务器和客户端 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113542359B (zh) * | 2021-06-17 | 2023-09-05 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113420941A (zh) * | 2021-07-16 | 2021-09-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 用户行为的风险预测方法及装置 |
CN113836153A (zh) * | 2021-08-16 | 2021-12-24 | 紫光云(南京)数字技术有限公司 | 移动端企业通讯录即时更新方法及*** |
CN113645308B (zh) * | 2021-08-18 | 2022-09-16 | 平安普惠企业管理有限公司 | 移动终端tcp通信、装置、设备及存储介质 |
CN113645308A (zh) * | 2021-08-18 | 2021-11-12 | 平安普惠企业管理有限公司 | 移动终端tcp通信、装置、设备及存储介质 |
CN113923249A (zh) * | 2021-10-12 | 2022-01-11 | 工银科技有限公司 | 一种高性能网络长连接建立方法及装置 |
CN114222062A (zh) * | 2021-12-13 | 2022-03-22 | 杭州萤石软件有限公司 | 取流方法、低功耗电池设备、客户端、取流***及设备 |
CN115334144A (zh) * | 2022-06-29 | 2022-11-11 | 上海万物新生环保科技集团有限公司 | 一种业务状态变更通知的处理方法、装置及*** |
CN116708533A (zh) * | 2022-10-31 | 2023-09-05 | 荣耀终端有限公司 | 连接切换方法、服务器停机方法、终端设备和服务器 |
CN116361038A (zh) * | 2023-06-02 | 2023-06-30 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、***、设备及存储介质 |
CN116361038B (zh) * | 2023-06-02 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、***、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109660584A (zh) | 一种客户端与服务器建立长连接的方法及通信方法与通信*** | |
CN102880475B (zh) | 计算机软件***中基于云计算的实时事件处理***及方法 | |
CN104253704B (zh) | 一种上报终端日志的方法、装置和*** | |
CN105407180A (zh) | 服务器的消息推送方法和装置 | |
TWI742131B (zh) | 虛擬交換機的升級方法和裝置 | |
CN105681454A (zh) | 一种自适应连接云桌面方法及*** | |
US20220209878A1 (en) | Method, system and device for pushing information, and storage medium thereof | |
CN103096271A (zh) | 信息推送***和信息推送方法 | |
CN110868278B (zh) | 一种轨道交通综合监控***通信前置机双机冗余的方法 | |
CN109039881A (zh) | 一种智能配电监控管理***及信息推送方法 | |
CN110445697A (zh) | 视频大数据云平台设备接入服务方法 | |
CN116048538A (zh) | 用于dpu的服务网格部署方法及装置 | |
CN102111436B (zh) | 一种通过iSCSI访问存储设备的方法和一种存储设备 | |
KR20070024183A (ko) | 데이터 전송 제어 방법 및 상기 방법에 의해 데이터를전송하는 네트워크 장치 | |
CN110913013A (zh) | 多屏互动方法及*** | |
CN103051484B (zh) | 会话业务处理方法、***和会话边缘控制器 | |
CN113259408A (zh) | 数据传输方法和*** | |
CN110674221A (zh) | 一种空间数据同步方法、终端及计算机可读存储介质 | |
CN114157725B (zh) | 设备联动的方法、装置、服务器、电子设备以及存储介质 | |
CN109274774A (zh) | 一种数据存储方法、装置和计算机可读存储介质 | |
CN114301880B (zh) | 三维数据传输方法及电子设备、信令服务器 | |
CN113053374B (zh) | 一种大屏幕控制*** | |
CN116192863A (zh) | 微服务流量处理方法、dpu服务网格部署方法及*** | |
CN114050986B (zh) | 信令跟踪方法、装置、设备及存储介质 | |
CN105262692A (zh) | 实现openflow交换机流表实时同步的方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190419 |
|
RJ01 | Rejection of invention patent application after publication |