CN103780603B - 应用内轻量级推送方法 - Google Patents
应用内轻量级推送方法 Download PDFInfo
- Publication number
- CN103780603B CN103780603B CN201310750165.6A CN201310750165A CN103780603B CN 103780603 B CN103780603 B CN 103780603B CN 201310750165 A CN201310750165 A CN 201310750165A CN 103780603 B CN103780603 B CN 103780603B
- Authority
- CN
- China
- Prior art keywords
- data
- time
- server
- user
- client
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应用内轻量级推送方法,该方法通过在服务器端设置时间戳来实现客户端周期性的发送连接请求,并且在服务器端和数据库采用时间标签的机制来记录数据发生更新的时间,通过时间的对比在服务器端的缓存表中只存放本次更新的数据,缓存表中的数据若是有同一个用户的不同类型的消息则通过打包机制把所有数据一次的推送到客户端,推送后的缓存表则清空,能够将更新的数据及时的推送到客户端显示给用户,而且能够在满足用户的需求的同时减少服务器端的数据处理开销和内存空间的开销。
Description
技术领域
本发明属于无线通信技术领域,具体涉及一种应用内轻量级推送方法的设计。
背景技术
由于HTTP在每次请求结束后都会主动释放连接,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。现有技术的通常做法是即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
这个连接请求是由客户端主动发送的,但是客户端并不清楚服务器端什么时候有数据的更新,再者上述通常做法中客户端隔一段时间发连接请求,服务器端在没有连接的情况下,即使有数据的更新也不能及时的推送。
发明内容
本发明所要解决的技术问题是针对现有技术中服务器无法主动和客户端建立连接而导致的服务器数据推送不及时或者没有连接而造成无法推送的问题提出了一种应用内轻量级推送方法。
本发明解决其技术问题采用的技术方案是:应用内轻量级推送方法,具体包括:
步骤1、客户端向服务器发送HTTP连接请求和用户标识信息,服务器收到该请求后,启动在服务器端的时间戳开始倒计时,所述时间戳的时间长度为预设周期T,当时间戳倒计时剩余时间等于预设时间t时,服务器主动向客户端发送一个信号,客户端收到该信号后立即向服务器再次发送HTTP连接请求,建立连接;
步骤2、当所述步骤S1中客户端向服务器再次发送HTTP连接请求成功建立连接后,服务器处理收到的携带用户标识信息的消息,获得客户端该应用对应的用户标识信息;
如果所述用户标识信息对应的用户有数据的更新,服务器利用已建立的连接把更新的数据推送给相应的客户端用户,并且记录推送时间;如果没有数据的更新,服务器向相应的客户端用户发送一条空消息并记录发送时间,然后保持连接到有数据更新或者连接时间超时断开连接;
步骤3、客户端和服务器之间的连接断开时,与服务器对应的数据库将数据库中更新的数据放到服务器的缓存表中,在下次用户打开应用,客户端与服务器之间成功建立连接时,服务器把缓存表中的数据推送到客户端。
进一步的,所述客户端对应的每个应用都有一个应用表格,用于存放用户名和其对应的ID,如果客户端用户是第一次使用该应用,则需要注册获得一个ID,所述ID用于作为用户标识信息,并把ID号对应的用户名存放在该应用的应用表格中;如果不是第一次使用该应用,则在该应用的应用表格中存在该用户的用户名及其对应的ID号。
进一步的,所述步骤2中,服务器向客户端推送的数据是根据上次推送时间进行的增量推送,具体为:服务器采用时间标签对数据库中的数据进行时间更新的记录,时间标签的更新随数据库中数据更新而更新,服务器将上一次推送数据的时间和数据库中数据的更新时间作对比,然后取出数据库中更新的信息推送到客户端并记录本次推送数据的时间。
进一步的,所述服务器端采用缓存表来存放不同用户对应的不同类型的所有更新信息,所述缓存表中包括消息类型和本类型消息的推送时间,并且在数据库中存在对应的更新表,所述更新表中包括消息类型和消息更新时间。
更进一步的,在服务器推送完数据后,服务器将自动检测缓存表中的数据是否有新的更新数据没有推送,如果所有数据都已经推送,则清除缓存表中的数据,否则把缓存表中的数据全部推送后清除缓存表。
本发明的有益效果是:本发明一种应用内轻量级推送方法通过在服务器端设置时间戳来实现客户端周期性的发送连接请求,避免了数据更新不及时和无法推送数据;并且在服务器端和数据库采用时间标签的机制,通过时间的对比在服务器端的缓存表中只存放本次更新的数据,缓存表中的数据若是有同一个用户的不同类型的消息则通过打包机制把所有数据一次的推送到客户端,推送后的缓存表则清空,能够将更新的数据及时的推送到客户端,显示给用户,而且能够在满足用户的需求的同时减少服务器端的数据处理开销和内存空间的开销。
附图说明
图1所示为本发明具体实施方式的应用内轻量级推送方法的流程框图;
图2所示为本发明具体实施方式具体事例的流程框图。
具体实施方式
下面结合附图和具体的实施例对本发明作进一步的阐述。
如图1所示为本发明实施方式的应用内轻量级推送方法的流程框图,其具体包括:
步骤1、客户端向服务器发送HTTP连接请求和用户标识信息,服务器收到该请求后,启动在服务器端的时间戳开始倒计时,所述时间戳的时间长度为预设周期T,当时间戳倒计时剩余时间等于预设时间t时,服务器主动向客户端发送一个信号,客户端收到该信号后立即向服务器再次发送HTTP连接请求,建立连接;
所述步骤1具体为,首先客户端与服务器之间周期性建立HTTP连接,所述周期性可根据具体的环境、用户的需求等条件确定,所述周期可以预设为T,当用户打开并登录到客户端的应用,如果是第一次使用该应用,则需要注册获得一个ID,所述ID用于作为用户标识信息,并把ID号对应的用户名存放在该应用的应用表格中,应用表格包括用户名和其对应的ID号,用户在该应用注册获得ID号后,***根据一定的规则把用户名和对应的ID号放到应用中的表格;如果不是第一次使用该应用,则在应用的表格会有用户名及其对应的ID号的记录。客户端获取用户信息后,向服务器发送HTTP连接请求和用户标识等信息,服务器收到该请求后,启动在服务器端的时间戳开始倒计时,所述时间戳的时间长度为预设周期T,当时间戳倒计时剩余时间等于预设时间t时,该t可以设为几秒,具体值可以根据不同需求进行设定,服务器主动向客户端发送一个信号,客户端收到该信号后立即向服务器端再次发送HTTP连接请求,建立连接。
步骤2、当所述步骤S1中客户端向服务器再次发送HTTP连接请求成功建立连接后,服务器处理收到的携带用户标识信息的消息,获得客户端该应用对应的用户标识信息;
如果所述用户标识信息对应的用户有数据的更新,服务器利用已建立的连接把更新的数据推送给相应的客户端用户,并且记录推送时间;如果没有数据的更新,服务器向相应的客户端用户发送一条空消息并记录发送时间,然后保持连接到有数据更新或者连接时间超时断开连接。
其中,服务器向客户端推送的数据是根据上次推送时间进行的增量推送,具体为:服务器采用时间标签对数据库中的数据进行时间更新的记录,时间标签的更新随数据库中数据发生更新而更新,服务器将上一次推送数据的时间和数据库中数据的更新时间作对比,然后取出数据库中更新的信息推送到客户端并记录本次推送数据的时间。
所述服务器端采用缓存表来存放不同用户对应的不同类型的所有更新信息,所述缓存表中包括消息类型和本类型消息的推送时间,并且在数据库中存在对应的更新表,所述更新表中包括消息类型和消息更新时间;其中缓存表和更新表之间的消息类型是对应的,随着数据的不断更新,更新表中消息更新时间会对应发生更新,同样,缓存表中的推送时间也会不断的更新。对于同一个用户来说,缓存表中如果有更新的不同类型的消息或者是不止一条同一类型的消息的数据,服务器则把缓存表中的所有数据打包一起发送到对应的客户端用户,客户端收到打包的消息后,通过解压机制把不同类型的消息提取出来。
在每次服务器推送完数据后,服务器会自动检测缓存表中的数据是否有新的更新数据没有推送,如果所有数据都已经推送则清除缓存表中的数据,否则把缓存表中的数据全部推送后清除缓存表以节约服务器的开销和空间。
步骤3、客户端和服务器之间的连接断开时,与服务器对应的数据库将数据库中更新的数据放到服务器的缓存表中,在下次用户打开应用,客户端与服务器之间成功建立连接时,服务器把缓存表中的数据推送到客户端,从而实现应用内轻量级的推送。
为了本领域技术人员能够理解并且实施本发明技术方案,下面通过一个具体的实施例子对本发明应用内轻量级推送方法做进一步的阐述。
如图2所示为本发明实施例的具体流程框图,用户张三使用应用A:用户张三是第一次使用这个应用A,需要注册获得一个ID号,这个ID号是唯一的,用户张三注册后获得ID号为03,把用户张三和其ID一起加入到应用A的应用表格中,其中03就是用户张三在使用应用A的用户标识。如果不是第一次使用则在应用A的表中会有用户ID的记录。如表1所示,在应用A的应用表格中就有用户李四,用户王五的相关记录。
表1-应用A的应用表格
用户 | ID |
李四 | 01 |
王五 | 02 |
张三 | 03 |
客户端向服务器发送HTTP连接请求和用户标识信息,服务器收到该请求后,启动在服务器端的时间戳开始倒计时,时间戳的时间根据用户的需求设置为10分钟,当时间戳中的时间倒计时剩余5秒时,服务器主动向客户端发送一个信号,这个信号用来提示客户端连接将要断开,提醒客户端再次发送连接请求。客户端收到该信号后立即向服务器再次发送HTTP连接请求,建立连接,这次发送的只是连接请求不用携带用户ID03等信息。
如表2、3所示分别为数据库中的更新表1和服务器中的缓存表1,如果用户第一次使用应用,数据库中的所有数据均放到服务器端的缓存表中,用户张三有3条不同的消息,把这三条消息打包,服务器在连接的基础上一次性的向客户端推送数据,并记录本次的推送时间。然后把缓存表中的数据清空,只保留消息类型和推送时间。
表2-数据库中的更新表1和
消息 | 更新时间 |
消息1 | 8:00:00 |
消息2 | 8:02:00 |
消息3 | 8:03:00 |
表3-服务器中的缓存表1
消息 | 推送时间 |
消息1 | 8:05:00 |
消息2 | 8:05:00 |
消息3 | 8:05:00 |
数据库中的数据在不断地更新,通过服务器中的对比机制利用上次推送时间08:05:00和数据库中的更新时间作对比,如果有数据的更新,则更新的数据放到服务器中的缓存表中,然后在连接的基础上推送给客户端并记录推送的时间。如表4、5所示分别为数据库中的更新表2和服务器中的缓存表2,消息1和2更新时间分别为08:10:00和08:15:00,与上次推送时间08:05:00对比有数据的更新,则把更新的数据放到服务器中的缓存表中,服务器推送后记录本次推送时间08:11:00和08:16:00,推送后把缓存表中的数据清空。下次数据库中消息1中的更新时间和本次推送时间08:11:00作对比来判断信息是否有更新。如果没有数据的更新,服务器发送一条空消息并记录发送时间。消息3在上次推送后一直没有数据的更新,服务器向客户端发送空消息并记录发送空消息的时间08:20:00。
表4-数据库中的更新表2
消息 | 更新时间 |
消息1 | 8:10:00 |
消息2 | 8:15:00 |
消息3 | 8:03:00 |
表5-服务器中的缓存表2
消息 | 推送时间 |
消息1 | 8:11:00 |
消息2 | 8:16:00 |
消息3 | 8:20:00 |
当用户张三读取完应用A内的消息关闭或者退出应用A时,客户端和服务器之间的连接断开。数据库中更新的数据放到服务器的缓存表中,在下次客户端与服务器之间成功建立连接时,服务器把缓存表中的数据推送到客户端,从而实现应用内轻量级的推送。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为发明的保护范围并不局限于这样的特别陈述和实施例。凡是根据上述描述做出各种可能的等同替换或改变,均被认为属于本发明的权利要求的保护范围。
Claims (4)
1.应用内轻量级推送方法,其特征在于,具体包括:
步骤1、客户端向服务器发送HTTP连接请求和用户标识信息,服务器收到该请求后,启动在服务器端的时间戳开始倒计时,所述时间戳的时间长度为预设周期T,当时间戳倒计时剩余时间等于预设时间t时,服务器主动向客户端发送一个信号,客户端收到该信号后立即向服务器再次发送HTTP连接请求,建立连接;
步骤2、当所述步骤1中客户端向服务器再次发送HTTP连接请求成功建立连接后,服务器处理收到的携带用户标识信息的消息,获得客户端该应用对应的用户标识信息;
如果所述用户标识信息对应的用户有数据的更新,服务器利用已建立的连接把更新的数据推送给相应的客户端用户,并且记录推送时间;如果没有数据的更新,服务器向相应的客户端用户发送一条空消息并记录发送时间,然后保持连接到有数据更新或者连接时间超时断开连接;
所述步骤2中,服务器向客户端推送的数据是根据上次推送时间进行的增量推送,具体为:服务器采用时间标签对数据库中的数据进行时间更新的记录,时间标签的更新随数据库中数据更新而更新,服务器将上一次推送数据的时间和数据库中数据的更新时间作对比,然后取出数据库中更新的信息推送到客户端并记录本次推送数据的时间;
步骤3、客户端和服务器之间的连接断开时,与服务器对应的数据库将数据库中更新的数据放到服务器的缓存表中,在下次用户打开应用,客户端与服务器之间成功建立连接时,服务器把缓存表中的数据推送到客户端。
2.如权利要求1所述的方法,其特征在于,所述客户端对应的每个应用都有一个应用表格,用于存放用户名和其对应的ID,如果客户端用户是第一次使用该应用,则需要注册获得一个ID,所述ID用于作为用户标识信息,并把ID号对应的用户名存放在该应用的应用表格中;如果不是第一次使用该应用,则在该应用的应用表格中存在该用户的用户名及其对应的ID号。
3.如权利要求1所述的方法,其特征在于,所述服务器端采用缓存表来存放不同用户对应的不同类型的所有更新信息,所述缓存表中包括消息类型和本类型消息的推送时间,并且在数据库中存在对应的更新表,所述更新表中包括消息类型和消息更新时间。
4.如权利要求1所述的方法,其特征在于,在服务器推送完数据后,服务器将自动检测缓存表中的数据是否有新的更新数据没有推送,如果所有数据都已经推送,则清除缓存表中的数据,否则把缓存表中的数据全部推送后清除缓存表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750165.6A CN103780603B (zh) | 2013-12-31 | 2013-12-31 | 应用内轻量级推送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750165.6A CN103780603B (zh) | 2013-12-31 | 2013-12-31 | 应用内轻量级推送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103780603A CN103780603A (zh) | 2014-05-07 |
CN103780603B true CN103780603B (zh) | 2016-10-19 |
Family
ID=50572433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750165.6A Expired - Fee Related CN103780603B (zh) | 2013-12-31 | 2013-12-31 | 应用内轻量级推送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103780603B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763473A (zh) * | 2016-04-14 | 2016-07-13 | 北京思特奇信息技术股份有限公司 | 一种均衡负载的路由选取方法及*** |
CN106998274A (zh) * | 2016-12-12 | 2017-08-01 | 深圳大宇无限科技有限公司 | 应用消息推送方法和装置 |
CN107704537A (zh) * | 2017-09-22 | 2018-02-16 | 咪咕动漫有限公司 | 一种待更新对象的发布方法、装置和存储介质 |
CN109040296B (zh) * | 2018-08-30 | 2021-04-06 | 上海艾融软件股份有限公司 | 一种基于长连接的数据推送方法及*** |
CN114697267B (zh) * | 2022-03-06 | 2024-02-02 | 道莅智远科技(青岛)有限公司 | 一种工业控制plc实时数据通讯中断续传优化方法 |
CN117411933B (zh) * | 2023-10-16 | 2024-05-24 | 国电南瑞科技股份有限公司 | 一种服务数据推送方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179435A (zh) * | 2007-11-22 | 2008-05-14 | Ut斯达康通讯有限公司 | 一种主动推送网管事件的方法及网络管理*** |
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN101883086A (zh) * | 2010-03-15 | 2010-11-10 | 浪潮集团山东通用软件有限公司 | 一种ASP.NET环境下Comet功能的实现方法 |
CN102035893A (zh) * | 2010-12-23 | 2011-04-27 | 中国农业银行股份有限公司 | 一种服务器主动推送数据的方法和*** |
CN103281355A (zh) * | 2013-05-02 | 2013-09-04 | 同济大学 | 基于模糊决策的服务器推送方法 |
-
2013
- 2013-12-31 CN CN201310750165.6A patent/CN103780603B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179435A (zh) * | 2007-11-22 | 2008-05-14 | Ut斯达康通讯有限公司 | 一种主动推送网管事件的方法及网络管理*** |
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN101883086A (zh) * | 2010-03-15 | 2010-11-10 | 浪潮集团山东通用软件有限公司 | 一种ASP.NET环境下Comet功能的实现方法 |
CN102035893A (zh) * | 2010-12-23 | 2011-04-27 | 中国农业银行股份有限公司 | 一种服务器主动推送数据的方法和*** |
CN103281355A (zh) * | 2013-05-02 | 2013-09-04 | 同济大学 | 基于模糊决策的服务器推送方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103780603A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780603B (zh) | 应用内轻量级推送方法 | |
CN102521909B (zh) | 排队服务处理方法及*** | |
US9723583B2 (en) | Masterless slot allocation | |
CN104065729B (zh) | 信息推送方法及装置 | |
CN103747434A (zh) | 更换号码时自动更新相关联系人通讯录的***与方法 | |
US20150205316A1 (en) | Apparatus and method for managing energy information profile of home based on smart plug | |
DE602004022528D1 (de) | Funknetzwerkzuweisungs- und zugangssystem | |
CN105184540A (zh) | 一种智能快递柜***控制方法 | |
MX2007003517A (es) | Sistema para el manejo automatizado de migracion espontanea de nodo en una red inalambrica fija distribuida. | |
CN105631960A (zh) | 一种基于wifi无线装置的自动考勤***及方法 | |
CN101729441A (zh) | 更新提醒方法、***、更新源服务器及接入服务器 | |
CN103763149A (zh) | 网络用户数的实时统计方法 | |
CN102185875A (zh) | 一种信息同步更新的方法与*** | |
CN104009894A (zh) | 局域网内服务信息的自动获取方法和***、设备 | |
EP1298952A3 (en) | Method for maintaining information consistency between multiple authentication servers of a radio network | |
CN103476142B (zh) | 一种针对聚集在一起的智能手机组建临时用户组的方法 | |
CN106230899A (zh) | 一种智能公交信息查询*** | |
CN104052779A (zh) | 一种信息推荐的方法、***及智能终端 | |
CN108200117B (zh) | 智能手持终端数据同步***及方法 | |
CN104573922A (zh) | 企业移动办公平台定点签到***及方法 | |
CN105354110B (zh) | 云服务器数据备份方法及装置 | |
CN101997706B (zh) | 定时更新方法及终端、以及数据服务器 | |
CN105429823B (zh) | 分布式通信设备中组播流量检测方法及装置 | |
CN116405552A (zh) | 一种低功耗网络中的分段推送方法及*** | |
CN105656959A (zh) | 基于路由机制的多终端pub/sub消息同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161019 Termination date: 20191231 |