CN105407149B - 消息推送方法及装置 - Google Patents

消息推送方法及装置 Download PDF

Info

Publication number
CN105407149B
CN105407149B CN201510728823.0A CN201510728823A CN105407149B CN 105407149 B CN105407149 B CN 105407149B CN 201510728823 A CN201510728823 A CN 201510728823A CN 105407149 B CN105407149 B CN 105407149B
Authority
CN
China
Prior art keywords
client
message
server
push
websocket agreement
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
Application number
CN201510728823.0A
Other languages
English (en)
Other versions
CN105407149A (zh
Inventor
朱肇洲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Fanxing Huyu IT Co Ltd
Original Assignee
Guangzhou Kugou Computer Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Kugou Computer Technology Co Ltd filed Critical Guangzhou Kugou Computer Technology Co Ltd
Priority to CN201510728823.0A priority Critical patent/CN105407149B/zh
Publication of CN105407149A publication Critical patent/CN105407149A/zh
Application granted granted Critical
Publication of CN105407149B publication Critical patent/CN105407149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种消息推送方法及装置,属于计算机领域。所述方法包括:检测客户端是否兼容网络套接字Websocket协议;若所述客户端兼容所述Websocket协议,则基于Websocket协议进行消息推送;若所述客户端不兼容所述Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器之间的同步,解决了当服务器基于轮询方式进行消息推送时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。

Description

消息推送方法及装置
技术领域
本发明涉及计算机领域,特别涉及一种消息推送方法及装置。
背景技术
在服务器向客户端推送消息时,为了实现服务器与客户端之间的实时通讯,开发人员常用的推送方法为轮询(Polling)推送。
轮询推送方法包括:客户端每隔预定时间间隔向服务器端发出获取请求,服务器端在存在推送消息时,向客户端反馈推送消息;在不存在推送消息,向客户端反馈代表空的消息。
在实现本发明实施例的过程中,发明人发现现有技术至少存在以下问题:
轮询推送方法是以频繁请求的方式来保持客户端和服务器端的同步,这就使得每个客户端在与服务器进行实时通讯的过程中,占用大量的服务器资源。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种虚拟礼品赠送方法及装置。所述技术方案如下:
第一方面,提供了一种消息推送方法,所述方法包括:
检测客户端是否兼容网络套接字Websocket协议;
若所述客户端兼容所述Websocket协议,则基于Websocket协议进行消息推送;
若所述客户端不兼容所述Websocket协议,则基于长轮询方式进行消息推送。
在第一方面的第一种可能的实施方式中,所述检测客户端是否兼容网络套接字Websocket协议,包括:
通过预定函数检测所述客户端是否兼容网络套接字Websocket协议;
其中,所述预定函数是所述Websocket协议所提供的函数。
在第二种可能的实施方式中,所述基于长轮询方式进行消息推送,包括:
接收所述客户端发送的第i轮询请求;
在不存在待推送的消息时,忽略所述第i轮询请求且保持与所述客户端之间的网络连接;
接收所述客户端发送的第i+1轮询请求;所述第i+1轮询请求是所述网络连接超时或断开时所述客户端重新发送的轮询请求,其中i为正整数。
在第三种可能的实施方式中,所述接收所述客户端发送的第i轮询请求之后,还包括:
在存在所述待推送的消息时,向所述客户端发送所述待推送的消息。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式或者第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述若所述客户端兼容所述Websocket协议,则基于Websocket协议进行消息推送之后,还包括:
检测与所述客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;
若所述网络连接在预设时间内的中断次数超过所述预设阈值,则基于所述长轮询方式进行消息推送。
第二方面,提供了一种消息推送装置,所述装置包括:
检测模块,用于检测客户端是否兼容网络套接字Websocket协议;
第一推送模块,用于在所述检测模块检测结果为所述客户端兼容所述Websocket协议时,基于Websocket协议进行消息推送;
第二推送模块,用于在所述检测模块检测结果为所述客户端不兼容所述Websocket协议时,基于长轮询方式进行消息推送。
在第二方面的第一种可能的实施方式中,所述检测模块,还用于,通过预定函数检测所述客户端是否兼容网络套接字Websocket协议,其中,所述预定函数是所述Websocket协议所提供的函数。
在第二种可能的实施方式中,所述第二推送模块,包括:
第一接收单元,用于接收所述客户端发送的第i轮询请求;
连接保持单元,用于在不存在待推送的消息时,忽略所述第一接受单元接收的所述第i轮询请求且保持与所述客户端之间的网络连接;
第二接收单元,用于接收所述客户端发送的第i+1轮询请求;所述第i+1轮询请求是所述网络连接超时或断开时所述客户端重新发送的轮询请求,其中i为正整数。
在第三种可能的实施方式中,所述第二推送模块,还包括:
消息发送单元,用于所述第一接收单元接收所述客户端发送的第i轮询请求之后,在存在所述待推送的消息时,向所述客户端发送所述待推送的消息。
结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式或者第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述第一推送模块,包括:
检测单元,用于检测与所述客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;
切换单元,用于在所述检测单元检测结果为所述网络连接在预设时间内的中断次数超过所述预设阈值时,切换至第一推送模块。
本发明实施例提供的技术方案带来的有益效果是:
通过检测客户端是否兼容网络套接字Websocket协议;通过检测客户端是否兼容Websocket协议;若客户端兼容Websocket协议,则基于Websocket协议进行消息推送;若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器端的同步,解决了当客户端以频繁请求的方式来保持客户端和服务器之间的同步时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。
此外,本发明实施例提供的消息推送方法,在基于Websocket协议进行消息推送时,通过检测与客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;若超过预设阈值,则基于长轮询方式进行消息推送,使得在客户端和服务器之间的网络连接环境较差时,客户端仍可以在尽量短的时间内接收到服务器的推送消息,达到了在客户端和服务器之间的网络连接环境较差时,提高客户端接收服务器的推送消息的实时性的效果。
进一步地,本发明实施例提供的消息推送方法,在基于长轮询方式进行消息推送时,客户端发送第i轮询请求后,通过服务器检测是否存在待推送的消息;在不存在待推送的消息时,忽略第i轮询请求且保持与客户端之间的网络连接;在存在待推送的消息时,向客户端发送待推送的消息;接收客户端发送的第i+1轮询请求,使得服务器在基于长轮询方式进行消息推送时,若服务器中没有待推送的消息,则不向客户端推送消息,解决了基于轮询方式进行消息推送时,若服务器中没有待推送的消息,重复向客户端发送旧的待推送消息的问题,达到了减少网络宽带的利用率,提高消息推送的准确性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一个示例性实施例示出的一种消息推送方法流程图;
图2是根据一个示例性实施例示出的基于Websocket协议进行消息推送时网络连接建立过程的交互图;
图3是根据另一个示例性实施例示出的一种消息推送方法流程图;
图4是根据一个示例性实施例示出的一种消息推送装置的框图;
图5是根据另一个示例性实施例示出的一种消息推送装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。HTTP协议是一种单向的网络协议。在建立连接后,只有当客户端向服务器发出资源请求后,服务器才能返回相应的数据。而服务器不能主动的推送数据给客户端。
若客户端需要获取服务器的实时数据,就需要客户端与服务器之间反复进行HTTP通信。即,客户端不断发送资源请求,以实现服务器向客户端实时地进行消息推送。常用的消息推送方法如下:
轮询(Polling):
轮询方式的过程为:客户端定时地向服务器发送资源请求;服务器接收到资源请求后,把待推送的数据推送给客户端;客户端接收该待推送的数据。定期重复上述过程。
虽然轮询的方式实现了客户端与服务器之间的实时通讯,但是当服务器中没有待推送的数据推送给客户端时,该轮询的过程仍然进行,服务器会把推送过的数据再次进行推送,既浪费网络带宽,又浪费了服务器中CPU的利用率。
请参考图1,其示出了本发明一个实施例提供的消息推送方法的流程图,本实施例以该消息推送方法应用于服务器中来举例说明。该消息推送方法可以包括但不限于以下步骤:
步骤101,检测客户端是否兼容Websocket协议。
步骤102,若客户端兼容Websocket协议,则基于Websocket协议进行消息推送。
步骤103,若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送。
综上所述,本发明实施例提供的消息推送方法,通过检测客户端是否兼容Websocket协议;若客户端兼容Websocket协议,则基于Websocket协议进行消息推送;若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器之间的同步,解决了当服务器基于轮询方式进行消息推送时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。
可选的,基于Websocket协议进行消息推送时,网络连接的建立至少需要一对网络套接字,其中一个运行于客户端,称为WS Client(Websocket Client,网络套接字客户端),另一个运行于服务器端,称为WS Server(Websocket Server,网络套接字服务器)。
基于Websocket协议进行消息推送时,除了要进行基于TCP协议的握手过程之外,还要进行WS Client与WS Server之间的握手过程。
请参考图2,其示出了本发明一个实施例提供的基于Websocket协议进行消息推送时网络连接建立过程的交互图,其中,客户端中包括基于Websocket协议的WS Client和基于TCP协议的TCP Client;服务器端中包括基于Websocket协议的Websocket Server和基于TCP协议的TCP Server。该基于Websocket协议进行消息推送的网络连接建立步骤如下:
1)WS Client向TCP Client发送网络连接请求;
2)第一次握手:TCP Client收到该网络连接请求后,将SYN(synchronous,同步信号)包发送给TCP Server,并进入SYN_SEND状态,等待TCP Server确认;
3)第二次握手:TCP Server接收到SYN包后,将SYN包和ACK包(Acknowledgement,确认字符)返回给TCP Client,此时TCP Server进入SYN_RECV状态;
4)第三次握手:若TCP Client成功接收到该SYN和ACK包,则TCP Client将ACK确认包发送给TCP Server;
ACK确认包发送完毕,TCP Client和TCP Server进入ESTABLISHED状态,完成三次握手。
如果基于TCP协议的网络连接过程成功,那么客户端与服务器之间的网络连接建立。
如果基于TCP协议的网络连接过程失败,那么后面的过程就不会执行,客户端会收到错误消息的通知。
以下为客户端和服务器基于TCP协议成功建立连接后,WS Client与WS Server之间的握手过程:
5)WS Client通过HTTP协议向WS Server发送连接请求,该连接请求中包含WSServer中WebSocket协议的字版本号,原始地址,主机地址等;
本次连接请求,用于服务器端判断消息推送方法是基于WebSocket协议还是基于HTTP协议。
6)WS Server收到WS Client发来的连接请求后,若检测到数据包数据和格式正确、客户端和服务器端的协议版本号匹配,则WS Server接收本次连接请求,并将相应的数据包回复给WS Client;
其中,回复的数据包也是采用HTTP协议传输。
7)WS Client接收到WS Server回复的数据包后,如果数据包的内容和格式都正确,表示本次握手成功。
此后,服务器就可以基于WebSocket协议向客户端实时地进行消息推送。
可选的,基于长轮询方式进行消息推送的过程为:
1)基于TCP协议进行握手过程,建立客户端与服务器之间的网络连接;
具体的,该握手过程与上述基于Websocket协议进行消息推送时,基于TCP协议进行的握手过程一致,此处不再赘述。
2)客户端向服务器发送资源请求;
3)服务器中如果存在待推送数据,就把该数据推送给客户端,客户端收到该数据后,断开本次网络连接,并再次向服务器发送网络连接请求;
4)如果服务器不存在待推送数据,服务器保持连接,直到服务器接收到新的待推送数据时,再将该新的待推送数据发送给客户端;
5)如果服务器中的待推送数据长时间没有更新,客户端与服务器端的网络连接就会超时,网络连接断开,则客户端再次向服务器发送网络连接请求。也即,步骤1中建立网络连接时的网络连接请求。
循环上述过程。
请参考图3,其示出了本发明一个实施例提供的消息推送方法的流程图,本实施例以该消息推送方法应用于服务器中来举例说明,该消息推送方法可以包括但不限于以下步骤:
步骤301,检测客户端是否兼容Websocket协议。
由于Websocket协议是一种新型协议,并非所有客户端都兼容Websocket协议。因此,在客户端与服务器之间建立网络连接后,若客户端向服务器发送了资源请求,服务器接收到该资源请求后,需要对该客户端是否兼容Websocket协议进行检测。
服务器检测客户端是否兼容Websocket协议的方法为:通过预定函数检测客户端是否兼容Websocket协议。
其中,预定函数是Websocket协议所提供的函数。
在Websocket协议中,包含一个预定函数,该预定函数用于检测当前发出资源请求的客户端,是否兼容Websocket协议。
在客户端与服务器之间的网络连接建立后,客户端向服务器发送的资源请求中包含一个头信息,若服务器通过预设函数检测到该头信息中包含预定字段,则服务器判断为当前客户端兼容Websocket协议。此后,服务器基于Websocket协议向客户端进行消息推送,执行步骤302。
若服务器在头文件中没有检测到该预定字段,则服务器判断为当前客户端不兼容Websocket协议。由于所有类型的浏览器都对HTTP协议兼容,而长轮询方式是服务器基于HTTP协议向客户端推送消息,且相对于传统的轮询方式占用的服务器资源较少,因此,服务器基于长轮询方式进行消息推送,来保证客户端的浏览功能正常使用,执行步骤304。
步骤302,基于Websocket协议向客户端进行消息推送。
步骤303,检测与客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值。
服务器每隔预定时间间隔,检测与客户端之间的网络连接在预设时间内的终端次数是否超过预设阈值。
若服务器在每个预定时间间隔的检测结果为与客户端之间的网络连接,在预设时间内的中断次数未超过预设阈值,则认为当前的网络环境较好,继续基于Websocket协议进行消息推送,执行步骤302。
若服务器在每个预定时间间隔的检测结果为与客户端之间的网络连接,在预设时间内的中断次数超过预设阈值,则认为当前的网络环境差,此时,服务器转基于长轮询方式进行消息推送,执行步骤304。
其中,预定时间间隔、预设时间和预设阈值为开发者自行设置的数值,本实施例不做限定。如:预定时间间隔为2分钟,预设时间为5分钟,预设阈值为2次,即,服务器每隔2分钟,检测与客户端之间的网络连接在5分钟内的中断次数是否超过2次;或者预定时间间隔为1分钟,预设时间为10分钟,预设阈值为3次,即,服务器每隔1分钟,检测与客户端之间的网络连接在10分钟内的中断次数是否超过3次。
由于,服务器在基于Websocket协议向客户端进行消息推送时,分为两个过程:连接建立过程和数据传输过程。连接建立过程又分为基于TCP协议的握手过程和WS Client与WS Server之间的握手过程。
其中,基于TCP协议的握手过程是基于Websocket协议进行消息推送和基于长轮询方式进行消息推送都需要进行的过程,而WS Client与WS Server之间的握手过程仅在基于Websocket协议进行消息推送时,才会发生。
因此,基于Websocket协议进行消息推送的连接建立过程,比基于长轮询方式进行消息推送的连接建立过程要多进行一次握手。由此可知,基于Websocket协议进行消息推送的连接建立时间要多于基于长轮询方式进行消息推送的连接建立时间。
因此,当网络连接多次断开时,基于Websocket协议进行消息推送要耗费大量的时间在建立连接上。为了提高客户端接收服务器的推送消息的实时性,当在一定时间内网络连接多次断开时,服务器选择基于长轮询方式向客户端进行消息推送。
步骤304,基于长轮询方式向客户端进行消息推送。
步骤305,接收客户端发送的第i轮询请求,其中i为正整数。
服务器的判断结果为基于长轮询方式向客户端进行消息推送后,接收客户端发送的第i轮询请求。
其中,第i轮询请求是客户端向服务器发送的资源请求,服务器根据该第i轮询请求作出响应。
在服务器中存在待推送的消息时,执行步骤306;在服务器中不存在待推送的消息时,执行步骤307。
步骤306,在存在待推送的消息时,向客户端发送待推送的消息。
服务器和客户端之间的网络连接存在一个时间阈值,在该时间阈值内,始终保持网络连接。服务器接收到客户端的第一轮询请求后,若在时间阈值内,服务器检测结果为存在对应的客户端的待推送消息,则将该消息推送给客户端。
客户端接收到服务器的推送消息后,服务器断开与客户端之间的网络连接。
本步骤中,时间阈值可由开发者设置,本实施例不做限定,比如时间阈值为1分钟。
客户端接收到服务器的推送消息后,服务器断开与客户端之间的网络连接。
步骤307,在不存在待推送的消息时,忽略第i轮询请求且保持与客户端之间的网络连接。
在客户端发送第i轮询请求后,服务器定时检测是否存在对应的客户端的待推送的消息,如:服务器每隔0.1秒检测是否存在对应的客户端的待推送的消息。在服务器检测结果为不存在对应的客户端的待推送的消息时,不向客户端推送消息,并且保持客户端和服务器之间的网络连接,也即,忽略第i轮询请求且保持与客户端之间的网络连接。
步骤308,接收客户端发送的第i+1轮询请求。
其中,该第i+1轮询请求是网络连接超时或断开时客户端重新发送的资源请求。
若在时间阈值内不存在待推送的消息,则客户端和服务器之间的网络连接自动断开,即网络连接超时。客户端接收到服务器发送的网络超时信息后,向服务器发送第i+1轮询请求。
若在时间阈值内存在待推送的消息,服务器将待推送的消息推送给客户端后,服务器与客户端之间的网络连接断开。客户端接收到服务器推送的消息后,向服务器发送第i+1轮询请求。
在上述两种情况下,通过客户端向服务器发送第i+1轮询请求,使得客户端与服务器之间的连接近似于一直存在,实现了“伪长链”。
服务器接收客户端发送的第i+1轮询请求,执行步骤304。
综上所述,本发明实施例提供的消息推送方法,通过检测客户端是否兼容Websocket协议;若客户端兼容Websocket协议,则基于Websocket协议进行消息推送;若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器端的同步,解决了当客户端以频繁请求的方式来保持客户端和服务器之间的同步时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。
此外,本发明实施例提供的消息推送方法,在基于Websocket协议进行消息推送时,通过检测与客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;若超过预设阈值,则基于长轮询方式进行消息推送,使得在客户端和服务器之间的网络连接环境较差时,客户端仍可以在尽量短的时间内接收到服务器的推送消息,达到了在客户端和服务器之间的网络连接环境较差时,提高客户端接收服务器的推送消息的实时性的效果。
进一步地,本发明实施例提供的消息推送方法,在基于长轮询方式进行消息推送时,客户端发送第i轮询请求后,通过服务器检测是否存在待推送的消息;在不存在待推送的消息时,忽略第i轮询请求且保持与客户端之间的网络连接;在存在待推送的消息时,向客户端发送待推送的消息;接收客户端发送的第i+1轮询请求,使得服务器在基于长轮询方式进行消息推送时,若服务器中没有待推送的消息,则不向客户端推送消息,解决了基于轮询方式进行消息推送时,若服务器中没有待推送的消息,重复向客户端发送旧的待推送消息的问题,达到了减少网络宽带的利用率,提高消息推送的准确性的效果。
请参考图4,其示出了本发明一个实施例提供的消息推送装置的框图,本实施例以该消息推送装置应用于服务器中来举例说明,该消息推送装置可以包括但不限于以下模块:检测模块410、第一推送模块420、第二推送模块430。
该检测模块410,用于检测客户端是否兼容网络套接字Websocket协议;
该第一推送模块420,用于在检测模块410检测结果为客户端兼容Websocket协议时,基于Websocket协议进行消息推送;
该第二推送模块430,用于在检测模块410检测结果为客户端不兼容Websocket协议时,则基于长轮询方式进行消息推送。
综上所述,本发明实施例提供的消息推送装置,通过检测客户端是否兼容Websocket协议;若客户端兼容Websocket协议,则基于Websocket协议进行消息推送;若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器端的同步,解决了当客户端以频繁请求的方式来保持客户端和服务器之间的同步时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。
请参考图5,其示出了本发明一个实施例提供的消息推送装置的框图,本实施例以该消息推送装置应用于服务器中来举例说明,该消息推送装置可以包括但不限于以下模块:检测模块510、第一推送模块520、第二推送模块530。
该检测模块510,用于检测客户端是否兼容网络套接字Websocket协议;
该第一推送模块520,用于在检测模块510检测结果为客户端兼容Websocket协议时,基于Websocket协议进行消息推送;
该第二推送模块530,用于在检测模块510检测结果为客户端不兼容Websocket协议时,则基于长轮询方式进行消息推送。
可选的,该检测模块510,还用于,通过预定函数检测客户端是否兼容网络套接字Websocket协议,其中,该预定函数是Websocket协议所提供的函数。
可选的,该第二推送模块530,包括:第一接收单元531、连接保持单元532、第二接收单元533。
该第一接收单元531,用于接收客户端发送的第i轮询请求;
该连接保持单元532,用于在不存在待推送的消息时,忽略第一接受单元531接收的第i轮询请求且保持与客户端之间的网络连接;
该第二接收单元533,用于接收客户端发送的第i+1轮询请求;第i+1轮询请求是网络连接超时或断开时客户端重新发送的轮询请求,其中i为正整数。
可选的,第二推送模块530,还包括:消息发送单元534。
该消息发送单元534,用于第一接收单元531接收客户端发送的第i轮询请求之后,在存在待推送的消息时,向客户端发送待推送的消息。
可选的,第一推送模块520,包括:检测单元521、切换单元522。
该检测单元521,用于检测与客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;
该切换单元522,用于在网络连接在检测单元521检测结果为预设时间内的中断次数超过预设阈值时,切换至第一推送模块。
综上所述,本发明实施例提供的消息推送装置,通过检测客户端是否兼容Websocket协议;若客户端兼容Websocket协议,则基于Websocket协议进行消息推送;若客户端不兼容Websocket协议,则基于长轮询方式进行消息推送,使得客户端不必频繁地向服务器发出资源请求,就可以保持客户端和服务器端的同步,解决了当客户端以频繁请求的方式来保持客户端和服务器之间的同步时,占用大量服务器资源的问题,达到了根据客户端的实际情况选择使用更为合理的消息推送方式,降低服务器端CPU的利用率的效果。
此外,本发明实施例提供的消息推送方法,在基于Websocket协议进行消息推送时,通过检测与客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;若超过预设阈值,则基于长轮询方式进行消息推送,使得在客户端和服务器之间的网络连接环境较差时,客户端仍可以在尽量短的时间内接收到服务器的推送消息,达到了在客户端和服务器之间的网络连接环境较差时,提高客户端接收服务器的推送消息的实时性的效果。
进一步地,本发明实施例提供的消息推送方法,在基于长轮询方式进行消息推送时,客户端发送第i轮询请求后,通过服务器检测是否存在待推送的消息;在不存在待推送的消息时,忽略第i轮询请求且保持与客户端之间的网络连接;在存在待推送的消息时,向客户端发送待推送的消息;接收客户端发送的第i+1轮询请求,使得服务器在基于长轮询方式进行消息推送时,若服务器中没有待推送的消息,则不向客户端推送消息,解决了基于轮询方式进行消息推送时,若服务器中没有待推送的消息,重复向客户端发送旧的待推送消息的问题,达到了减少网络宽带的利用率,提高消息推送的准确性的效果。
需要说明的是:上述实施例提供的消息推送的装置在消息推送时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的消息推送的装置与消息推送的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种消息推送方法,其特征在于,所述方法包括:
检测客户端是否兼容网络套接字Websocket协议;
若所述客户端兼容所述Websocket协议,则基于Websocket协议进行消息推送;
若所述客户端不兼容所述Websocket协议,则基于长轮询方式进行消息推送;
所述基于长轮询方式进行消息推送,包括:
接收所述客户端发送的第i轮询请求;
在不存在待推送的消息时,忽略所述第i轮询请求且保持与所述客户端之间的网络连接;
接收所述客户端发送的第i+1轮询请求;所述第i+1轮询请求是所述网络连接超时或断开时所述客户端重新发送的轮询请求,其中i为正整数;
所述基于长轮询方式进行消息推送,还包括:
若在时间阈值内不存在待推送的消息,则断开与所述客户端的网络连接并向所述客户端发送网络超时信息,以使所述客户端向服务器发送第i+1轮询请求;
若在时间阈值内存在待推送的消息,则将所述待推送的消息推送给所述客户端,断开与所述客户端之间的网络连接,以使所述客户端接收所述待推送的消息后,向服务器发送第i+1轮询请求。
2.根据权利要求1所述的方法,其特征在于,所述检测客户端是否兼容网络套接字Websocket协议,包括:
通过预定函数检测所述客户端是否兼容网络套接字Websocket协议;
其中,所述预定函数是所述Websocket协议所提供的函数。
3.根据权利要求1或2所述的方法,其特征在于,所述若所述客户端兼容所述Websocket协议,则基于Websocket协议进行消息推送之后,还包括:
检测与所述客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;
若所述网络连接在预设时间内的中断次数超过所述预设阈值,则基于所述长轮询方式进行消息推送。
4.一种消息推送装置,其特征在于,所述装置包括:
检测模块,用于检测客户端是否兼容网络套接字Websocket协议;
第一推送模块,用于在所述检测模块检测结果为所述客户端兼容所述Websocket协议时,基于Websocket协议进行消息推送;
第二推送模块,用于在所述检测模块检测结果为所述客户端不兼容所述Websocket协议时,基于长轮询方式进行消息推送;
所述第二推送模块,包括:
第一接收单元,用于接收所述客户端发送的第i轮询请求;
连接保持单元,用于在不存在待推送的消息时,忽略所述第一接受单元接收的所述第i轮询请求且保持与所述客户端之间的网络连接;
第二接收单元,用于接收所述客户端发送的第i+1轮询请求;所述第i+1轮询请求是所述网络连接超时或断开时所述客户端重新发送的轮询请求,其中i为正整数;
所述第二推送模块,还包括消息发送单元,用于:
若在时间阈值内不存在待推送的消息,则断开与所述客户端的网络连接并向所述客户端发送网络超时信息,以使所述客户端向服务器发送第i+1轮询请求;
若在时间阈值内存在待推送的消息,则将所述待推送的消息推送给所述客户端,断开与所述客户端之间的网络连接,以使所述客户端接收所述待推送的消息后,向服务器发送第i+1轮询请求。
5.根据权利要求4所述的装置,其特征在于,所述检测模块,还用于,通过预定函数检测所述客户端是否兼容网络套接字Websocket协议,其中,所述预定函数是所述Websocket协议所提供的函数。
6.根据权利要求4或5所述的装置,其特征在于,所述第一推送模块,包括:
检测单元,用于检测与所述客户端之间的网络连接在预设时间内的中断次数是否超过预设阈值;
切换单元,用于在所述检测单元检测结果为所述网络连接在预设时间内的中断次数超过所述预设阈值时,切换至第一推送模块。
CN201510728823.0A 2015-10-29 2015-10-29 消息推送方法及装置 Active CN105407149B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510728823.0A CN105407149B (zh) 2015-10-29 2015-10-29 消息推送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510728823.0A CN105407149B (zh) 2015-10-29 2015-10-29 消息推送方法及装置

Publications (2)

Publication Number Publication Date
CN105407149A CN105407149A (zh) 2016-03-16
CN105407149B true CN105407149B (zh) 2019-03-01

Family

ID=55472395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510728823.0A Active CN105407149B (zh) 2015-10-29 2015-10-29 消息推送方法及装置

Country Status (1)

Country Link
CN (1) CN105407149B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106341645A (zh) * 2016-09-14 2017-01-18 深圳市迈盛达信息技术有限公司 音视频通讯系统与方法
CN108696374B (zh) * 2017-04-10 2021-10-01 北京京东尚科信息技术有限公司 更新客户端配置的方法和装置
US10445153B2 (en) * 2017-06-30 2019-10-15 Ingram Micro, Inc. Technologies for managing web notifications in client-server systems
CN109344312A (zh) * 2018-10-11 2019-02-15 广州鼎甲计算机科技有限公司 基于全双工通信协议的数据交互方法和系统
CN110213155B (zh) * 2019-05-06 2022-02-22 腾讯科技(深圳)有限公司 通信处理方法、装置及相关设备、存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629921A (zh) * 2011-02-07 2012-08-08 J·阿尤索德保罗 用于在通信设备之间建立通信会话的系统和方法
CN103546584A (zh) * 2013-11-13 2014-01-29 深圳市中兴移动通信有限公司 信息推送方法和系统
CN103634382A (zh) * 2013-11-20 2014-03-12 安徽科大讯飞信息科技股份有限公司 一种在网页上实现实时交互的系统及方法
CN103945003A (zh) * 2014-05-06 2014-07-23 北京邮电大学 一种WebRTC客户端连接动态自适应选择的方法
CN104796473A (zh) * 2015-04-21 2015-07-22 努比亚技术有限公司 一种跨平台的信息推送方法及系统
CN105407180A (zh) * 2015-12-29 2016-03-16 曙光信息产业(北京)有限公司 服务器的消息推送方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629921A (zh) * 2011-02-07 2012-08-08 J·阿尤索德保罗 用于在通信设备之间建立通信会话的系统和方法
CN103546584A (zh) * 2013-11-13 2014-01-29 深圳市中兴移动通信有限公司 信息推送方法和系统
CN103634382A (zh) * 2013-11-20 2014-03-12 安徽科大讯飞信息科技股份有限公司 一种在网页上实现实时交互的系统及方法
CN103945003A (zh) * 2014-05-06 2014-07-23 北京邮电大学 一种WebRTC客户端连接动态自适应选择的方法
CN104796473A (zh) * 2015-04-21 2015-07-22 努比亚技术有限公司 一种跨平台的信息推送方法及系统
CN105407180A (zh) * 2015-12-29 2016-03-16 曙光信息产业(北京)有限公司 服务器的消息推送方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Research of Web Real-Time Communication" Based on Web Socket;Qigang Liu等;《Int. J. Communications, Network and System Sciences》;20121231;全文
"The WebSocket Protocol";IETF NetworkWorking Group;《RFC6455》;20111231;全文
"WebSocket在Web实时通信领域的研究";李代立等;《电脑知识与技术》;20101031;第6卷(第28期);全文
"基于Websocket信息推送的研究与实现";张信;《科学与财富》;20140403(第3期);全文

Also Published As

Publication number Publication date
CN105407149A (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
CN105407149B (zh) 消息推送方法及装置
EP2448206B1 (en) Method, system and device for transmitting video data
CN107645529B (zh) 心跳包发送方法及装置
CN101986648B (zh) 一种tcp选项的协商方法、装置及网络设备
CN111224999A (zh) 一种传输协议切换方法、装置、设备及存储介质
CN103546917B (zh) 数据传输方法和装置
JP2008015593A (ja) 中継装置、プログラム、中継方法及び通信システム
CN116048538B (zh) 用于dpu的服务网格部署方法及装置
CN104079571A (zh) 一种识别Android模拟器的方法及装置
CN102065152A (zh) 拼接墙系统及其通信装置
CN111885093B (zh) 事件请求的传输方法和装置、存储介质及电子设备
CN111711680A (zh) 基于udp协议的文件断点续传方法及装置
CN108989152A (zh) 获得网络延时的方法及装置以及计算机存储介质
CN106330833A (zh) 基于因特网内容适配协议的通信方法、客户端和服务器
CN109618004A (zh) 一种报文转发方法及装置
JP6393475B2 (ja) 通信アダプタ装置、通信システム、トンネル通信方法、及びプログラム
Hiesgen et al. Embedded Actors-Towards distributed programming in the IoT
Ronan et al. Evaluation of a DTN convergence layer for the AX. 25 network protocol
CN104797004A (zh) 主从设备间实现自动组网的方法
CN103841139A (zh) 传输数据的方法、装置和系统
WO2022110919A1 (zh) 一种信息订阅的方法及装置
CN103987017A (zh) 一种用于在wlan中建立服务访问的方法及系统
EP1220513A2 (en) Method and apparatus for handling services by a proxy
JP6213059B2 (ja) 中継プログラム、中継装置、及び中継方法
CN112118284A (zh) 一种面向网关设备的http数据请求方法、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 510660 Guangzhou City, Guangzhou, Guangdong, Whampoa Avenue, No. 315, self - made 1-17

Applicant after: Guangzhou KuGou Networks Co., Ltd.

Address before: 510000 B1, building, No. 16, rhyme Road, Guangzhou, Guangdong, China 13F

Applicant before: Guangzhou KuGou Networks Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200327

Address after: The new road in Whampoa District of Guangzhou City, Guangdong province 510032, 680 682, No. 684 room 701 (only for office use)

Patentee after: Guangzhou stars entertainment Mdt InfoTech Ltd

Address before: 510660 Guangzhou City, Guangzhou, Guangdong, Whampoa Avenue, No. 315, self - made 1-17

Patentee before: GUANGZHOU KUGOU COMPUTER TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right