CN107733979A - 数据推送方法、服务器及系统 - Google Patents
数据推送方法、服务器及系统 Download PDFInfo
- Publication number
- CN107733979A CN107733979A CN201710793624.7A CN201710793624A CN107733979A CN 107733979 A CN107733979 A CN 107733979A CN 201710793624 A CN201710793624 A CN 201710793624A CN 107733979 A CN107733979 A CN 107733979A
- Authority
- CN
- China
- Prior art keywords
- data
- terminal
- server
- interface
- request
- 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.)
- Granted
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/50—Network services
- H04L67/55—Push-based network services
-
- 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/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)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种数据推送方法、服务器及系统,其中所述数据推送方法包括:获取数据存储服务器弹出的数据;确定发出所述数据的接口;确定请求接收来自所述接口的消息的所有终端;向所述所有终端发送所述数据。
Description
技术领域
本发明涉及数据通信领域,具体涉及一种数据推送方法、服务器及系统。
背景技术
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Websocket协议是基于TCP的一种新的网络协议。Websocket协议支持客户端与远程主机之间进行全双工通信。用于此的安全模型是Web浏览器常用的基于原始的安全模式。协议包括一个开放的握手以及随后的TCP层上的消息帧。该技术的目标是为基于浏览器的、需要和服务器进行双向通信的应用程序提供一种通信机制。
在现有的数据发送方案中,客户端与服务器通过Websocket建立链接,服务器获取Redis中的数据,持续向客户端推送数据。当多客户端通过Websocket获取Redis中的数据时,由于Redis一次性弹出(POP)一条数据,如果不做任何处理,将导致弹出的一条特定数据只会被推送到一个客户端,其他客户端无法接收到相同内容,即该数据对其他客户端不可见,数据推送操作的效率较低。
发明内容
本发明要解决的是现有的数据推送操作的效率较低的问题。
有鉴于此,第一方面,本发明提供一种数据推送方法,包括:
获取数据存储服务器弹出的数据;
确定发出所述数据的接口;
确定请求接收来自所述接口的消息的所有终端;
向所述所有终端发送所述数据。
优选地,在所述确定请求接收来自所述接口的消息的所有终端的步骤之前,还包括:
接收连接终端发送的数据接收请求,所述数据接收请求中包括接口信息;
登记各个发送了数据接收请求的终端以及相应的接口信息。
优选地,还包括:
监测与终端的连接是否断开;
当与终端的连接断开时,注销登记的断开连接终端及相应的接口信息。
优选地,还包括:
监测与所有终端是否全部断开连接;
当与所有终端全部断开连接时,关闭与所述数据存储服务器的连接。
优选地,所述获取数据存储服务器弹出的数据的步骤,包括:
监测是否接收到连接终端发送的数据接收请求,所述数据接收请求中包括接口信息;
当第一次接收到一个连接终端发送的数据接受请求时,登记发送所述数据接收请求的终端及相应的接口信息;
与所述数据存储服务器建立连接,并从所述数据存储服务器获取数据。
优选地,执行本方法的设备与所述终端之间采用Websocket协议连接;所述数据存储服务器为Redis数据结构服务器。
第二方面,本发明还提供一种服务器,包括:至少一个处理器以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面中的数据推送方法。
第三方面,本发明还提供一种数据推送系统,包括:
数据存储服务器,用于弹出数据;
数据推送服务器,用于接收所述数据,确定所述数据存储服务器发出所述数据的接口,确定请求接收来自所述接口的消息的所有终端,向所述所有终端多播发送所述数据。
优选地,所述数据推送服务器还用于接收连接终端发送的数据接收请求,所述数据接收请求中包括接口信息,登记各个发送了数据接收请求的终端以及相应的接口信息。
优选地,所述数据推送服务器还用于监测与终端的连接是否断开,当与终端的连接断开时,注销登记的断开连接终端及相应的接口信息。
优选地,所述数据推送服务器与所述终端之间采用Websocket协议连接,所述数据存储服务器为Redis数据结构服务器。
根据本发明实施例提供的数据推送方法、服务器及系统,首先在接到弹出消息时确定消息弹出方发送该消息的接口,然后确定请求相同接口数据的终端,进一步采用发布订阅的方式对每次弹出的数据进行多播,将数据推送给所有登记的请求该接口数据的终端,实现相同数据的多终端接收功能,由此提高数据推送操作的效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据推送方法的流程图;
图2为本发明实施例提供的数据推送系统的结构示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一实施例提供了一种数据推送方法,该方法可以由用于发送数据的服务器来执行,在本实施例中,执行本方法的服务器与数据存储服务器之间通信连接,同时执行本方法的服务器与多个用户终端之间通过Websocket协议连接,如图1所示,该方法包括如下步骤:
S1,获取数据存储服务器弹出的数据,例如是Redis服务器通过特定接口弹出(POP)的一条数据;
S2,确定发出所述数据的接口,也即确定该数据来自哪个特定接口,通常数据的弹出方即Redis服务器在弹出数据的同时会告知该数据来自哪一接口,或者接口描述信息也是弹出数据的一部分,通过解析弹出数据即可确定其来自哪一接口;
S3,确定请求接收来自所述接口的消息的所有终端,确定终端的方式有多种,例如可以根据之前登记的需求信息来确定。
S4,向所述所有终端发送所述数据。
本实施例中执行本方法的服务器与数据存储服务器建立请求连接的过程发生在第一次接受到终端登记信息时,上述步骤S1具体包括如下步骤:
S11,监测是否接收到连接终端发送的数据接收请求,所述数据接收请求中包括接口信息,即由终端主动向服务器发送请求,描述终端需要接受来自哪些Redis接口的信息;
S12,当第一次接收到一个连接终端发送的数据接受请求时,登记发送所述数据接收请求的终端及相应的接口信息,可以建立数据请求列表,记录各个终端信息以及其需求的接口。
S13,与所述数据存储服务器建立连接,并从所述数据存储服务器获取数据,也即在某一终端发送了接受请求后,服务器登记其请求和身份,然后再与服务器建立连接获取弹出数据。
在执行数据推送的过程中可以包括如下步骤:
S01,接收连接终端发送的数据接收请求,所述数据接收请求中包括接口信息,即由终端主动向服务器发送请求,描述终端需要接受来自哪些Redis接口的信息;
S02,登记各个发送了数据接收请求的终端以及相应的接口信息,可以建立数据请求列表,记录各个终端信息以及其需求的接口。
上述步骤可以在终端与服务器建立Websocket连接时同步执行,也可以在任意时间由终端主动发起,服务器在接到请求时进行登记,以便服务器实时通过查询登记记录确定需求该数据的终端。
作为一个优选的实施方式,上述方法还包括:
S03,监测与终端的连接是否断开,当与终端的连接断开时,执行步骤S04,否则持续监测;
S04,注销登记的断开连接终端及相应的接口信息。
同时,可以检查所有终端是否全部断开连接,如果所有终端全部断开则可以关闭与数据存储服务器的连接,否则继续保持连接获取数据。
根据上述优选方案,当终端与服务器的Websocket连接断开时,注销之前登记的关于该终端的信息,直到重新建立连接时重新接收数据接收请求,由此来保证数据推送功能完整性、正确性。
本实施例还相应地提供一种服务器,包括:至少一个处理器以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述数据推送方法。
根据本发明实施例提供的数据推送方法及服务器,首先在接到弹出消息时确定消息弹出方发送该消息的接口,然后确定请求相同接口数据的终端,进一步采用发布订阅的方式对每次弹出的数据进行多播,将数据推送给所有登记的请求该接口数据的终端,实现相同数据的多终端接收功能,由此提高数据推送操作的效率。
本发明第二实施例提供一种数据推送系统,该系统包括数据存储服务器21和数据推送服务器22,在本实施例中数据推送服务器22与终端23之间采用Websocket协议连接,数据存储服务器21为Redis数据结构服务器。
其中,数据存储服务器21用于弹出数据,Redis服务器每次通过特定接口弹出(POP)一条数据;
数据推送服务器22用于接收所述数据,确定所述数据存储服务器21发出所述数据的接口,确定请求接收来自所述接口的消息的所有终端23,向所述所有终端发送所述数据。
本实施例中数据推送服务器22与数据存储服务器21建立请求连接的过程发生在第一次接受到终端登记信息时,具体地,数据推送服务器22监测是否接收到连接终端23发送的数据接收请求,所述数据接收请求中包括接口信息;当第一次接收到一个连接终端23发送的数据接受请求时,登记发送所述数据接收请求的终端及相应的接口信息;与所述数据存储服务器建立连接,并从所述数据存储服务器获取数据。
作为一个优选的实施方式,所述数据推送服务器22还用于接收连接终端23发送的数据接收请求,所述数据接收请求中包括接口信息,登记各个发送了数据接收请求的终端以及相应的接口信息,数据接收请求可以由终端23主动向服务器发送,以此描述终端23需要接受来自哪些Redis接口的数据。终端23与数据推送服务器22建立Websocket连接时可以同步发出数据接收请求,也可以在建立连接后的任意时间由终端23发起请求,数据推送服务器22在接到请求时进行登记,以便其实时通过查询登记记录确定需求接收该数据的终端23。
所述数据推送服务器22还用于监测与终端23的连接是否断开,当与终端23的连接断开时,注销登记的断开连接终端23及相应的接口信息。同时,数据推送服务器22可以检查所有终端23是否全部断开连接,如果所有终端23全部断开则可以关闭与数据存储服务器21的连接,否则继续保持连接获取数据。
根据上述优选方案,当终端23与数据推送服务器22的Websocket连接断开时,数据推送服务器22注销之前登记的关于该终端的信息,直到重新建立连接时重新接收数据接收请求,由此来保证数据推送功能完整性、正确性。
根据本发明实施例提供的数据推送系统,首先由数据存储服务器弹出数据,数据推送服务器在接到其弹出消息时确定发送该消息的接口,然后确定请求相同接口数据的终端,进一步采用发布订阅的方式对每次弹出的数据进行多播,将数据推送给所有登记的请求该接口数据的终端,实现相同数据的多终端接收功能,由此提高数据推送操作的效率。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (9)
1.一种数据推送方法,其特征在于,包括:
获取数据存储服务器弹出的数据;
确定发出所述数据的接口;
确定请求接收来自所述接口的消息的所有终端;
向所述所有终端发送所述数据。
2.根据权利要求1所述的方法,其特征在于,在所述确定请求接收来自所述接口的消息的所有终端的步骤之前,还包括:
接收连接终端发送的数据接收请求,所述数据接收请求中包括接口信息;
登记各个发送了数据接收请求的终端以及相应的接口信息。
3.根据权利要求2所述的方法,其特征在于,还包括:
监测与终端的连接是否断开;
当与终端的连接断开时,注销登记的断开连接终端及相应的接口信息。
4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
监测与所有终端是否全部断开连接;
当与所有终端全部断开连接时,关闭与所述数据存储服务器的连接。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述获取数据存储服务器弹出的数据的步骤,包括:
监测是否接收到连接终端发送的数据接收请求,所述数据接收请求中包括接口信息;
当第一次接收到一个连接终端发送的数据接受请求时,登记发送所述数据接收请求的终端及相应的接口信息;
与所述数据存储服务器建立连接,并从所述数据存储服务器获取数据。
6.根据权利要求1-3中任一项所述的方法,其特征在于,执行本方法的设备与所述终端之间采用Websocket协议连接。
7.根据权利要求1-3中任一项所述的方法,其特征在于,所述数据存储服务器为Redis数据结构服务器。
8.一种服务器,其特征在于,包括:至少一个处理器以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-7中任一项所述的数据推送方法。
9.一种数据推送系统,其特征在于,包括:
数据存储服务器,用于弹出数据;
数据推送服务器,用于接收所述数据,确定所述数据存储服务器发出所述数据的接口,确定请求接收来自所述接口的消息的所有终端,向所述所有终端发送所述数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710793624.7A CN107733979B (zh) | 2017-09-06 | 2017-09-06 | 数据推送方法、服务器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710793624.7A CN107733979B (zh) | 2017-09-06 | 2017-09-06 | 数据推送方法、服务器及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107733979A true CN107733979A (zh) | 2018-02-23 |
CN107733979B CN107733979B (zh) | 2021-05-28 |
Family
ID=61204993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710793624.7A Active CN107733979B (zh) | 2017-09-06 | 2017-09-06 | 数据推送方法、服务器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107733979B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314313A (zh) * | 2020-01-19 | 2020-06-19 | 成都康赛信息技术有限公司 | 一种基于消息的云推送方法 |
CN111405372A (zh) * | 2020-03-11 | 2020-07-10 | 山东广电信通网络运营有限公司 | 一种对显示终端设备的播单进行投放排期的方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070021136A1 (en) * | 2005-07-19 | 2007-01-25 | Andrew Allen | System and Method for Granting Transmit Capability In A Push to Communicate System |
US20080109665A1 (en) * | 2003-02-14 | 2008-05-08 | International Business Machines Corporation | Network processor power management |
CN101754184A (zh) * | 2008-12-08 | 2010-06-23 | 中国移动通信集团吉林有限公司 | 一种内容推送方法、系统及装置 |
CN101883419A (zh) * | 2009-05-06 | 2010-11-10 | 中兴通讯股份有限公司 | 客户端信息的同步方法和系统 |
CN103780681A (zh) * | 2014-01-06 | 2014-05-07 | 南京莱斯信息技术股份有限公司 | 一种高实时性Web应用系统及其数据实时推送方法 |
CN103873349A (zh) * | 2014-03-06 | 2014-06-18 | 广州金山网络科技有限公司 | 一种消息推送及弹出的方法、服务器及终端设备 |
US20140273611A1 (en) * | 2013-03-15 | 2014-09-18 | Knxid, Llc | Termination identification device and system |
CN104572840A (zh) * | 2014-12-11 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 一种用于提供推送消息的方法与设备 |
CN104754052A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 一种基于Websocket实现消息推送的方法 |
CN105117401A (zh) * | 2015-07-15 | 2015-12-02 | 天脉聚源(北京)教育科技有限公司 | 一种并行传输图片的方法、装置及系统 |
CN105450733A (zh) * | 2015-11-09 | 2016-03-30 | 北京锐安科技有限公司 | 一种业务数据分发处理方法及系统 |
-
2017
- 2017-09-06 CN CN201710793624.7A patent/CN107733979B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109665A1 (en) * | 2003-02-14 | 2008-05-08 | International Business Machines Corporation | Network processor power management |
US20070021136A1 (en) * | 2005-07-19 | 2007-01-25 | Andrew Allen | System and Method for Granting Transmit Capability In A Push to Communicate System |
CN101754184A (zh) * | 2008-12-08 | 2010-06-23 | 中国移动通信集团吉林有限公司 | 一种内容推送方法、系统及装置 |
CN101883419A (zh) * | 2009-05-06 | 2010-11-10 | 中兴通讯股份有限公司 | 客户端信息的同步方法和系统 |
US20140273611A1 (en) * | 2013-03-15 | 2014-09-18 | Knxid, Llc | Termination identification device and system |
CN103780681A (zh) * | 2014-01-06 | 2014-05-07 | 南京莱斯信息技术股份有限公司 | 一种高实时性Web应用系统及其数据实时推送方法 |
CN103873349A (zh) * | 2014-03-06 | 2014-06-18 | 广州金山网络科技有限公司 | 一种消息推送及弹出的方法、服务器及终端设备 |
CN104572840A (zh) * | 2014-12-11 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 一种用于提供推送消息的方法与设备 |
CN104754052A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 一种基于Websocket实现消息推送的方法 |
CN105117401A (zh) * | 2015-07-15 | 2015-12-02 | 天脉聚源(北京)教育科技有限公司 | 一种并行传输图片的方法、装置及系统 |
CN105450733A (zh) * | 2015-11-09 | 2016-03-30 | 北京锐安科技有限公司 | 一种业务数据分发处理方法及系统 |
Non-Patent Citations (1)
Title |
---|
崔晓光: ""多终端设备的消息推送服务的设计与实现"", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314313A (zh) * | 2020-01-19 | 2020-06-19 | 成都康赛信息技术有限公司 | 一种基于消息的云推送方法 |
CN111405372A (zh) * | 2020-03-11 | 2020-07-10 | 山东广电信通网络运营有限公司 | 一种对显示终端设备的播单进行投放排期的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107733979B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5898980B2 (ja) | ネットワーク環境において非持続性のメッセージの複数のキューを管理する方法、システム及び記憶媒体 | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其系统 | |
CN104144098B (zh) | 消息推送方法、系统及推送服务器设备 | |
CN102594876B (zh) | 游戏实时数据和更新数据的混合加速系统 | |
CN102664899B (zh) | 一种业务处理方法、装置及系统 | |
CN101594242A (zh) | 一种传输视频数据的方法、系统和装置 | |
CN106210049B (zh) | 一种基于消息队列的集群通信方法及系统 | |
CN106254377A (zh) | 支持海量长连接的软负载均衡方法及系统 | |
CN103312593B (zh) | 一种消息分发系统及方法 | |
CN112187903B (zh) | 一种消息推送方法、装置及消息服务系统 | |
CN107517227A (zh) | 用于分布式一致性系统的会话实现方法以及装置 | |
WO2015054336A2 (en) | System and method of delivering data that provides service differentiation and monetization in mobile data networks | |
CN104519414A (zh) | 一种流媒体传输的方法和系统 | |
CN107733979A (zh) | 数据推送方法、服务器及系统 | |
CN105978796A (zh) | 基于不稳定移动网络的消息通信方法及系统 | |
CN103516573B (zh) | 受限网络中客户端之间的数据传输方法和客户端 | |
CN103188134A (zh) | 逻辑中转通信方法、逻辑中转服务器和逻辑中转通信系统 | |
EP2944073A2 (en) | Method and system for the handling of redundant long poll | |
CN102387062B (zh) | 动态桥接点改善p2p节点在跨网络时的传输速度的方法 | |
CN106612307B (zh) | 一种永远在线业务的实现方法及装置 | |
CN111427703A (zh) | 工业数据实时展示方法及系统 | |
CN110192382B (zh) | 一种网络通信方法、对等体及系统 | |
CN105577433B (zh) | 一种acs集群管理方法、装置和系统 | |
CN109120578B (zh) | 一种实现链路连接处理的方法及装置 | |
CN111385324A (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 |