CN110999257A - 用于服务器通知的递送的传送方法选择 - Google Patents
用于服务器通知的递送的传送方法选择 Download PDFInfo
- Publication number
- CN110999257A CN110999257A CN201780093632.9A CN201780093632A CN110999257A CN 110999257 A CN110999257 A CN 110999257A CN 201780093632 A CN201780093632 A CN 201780093632A CN 110999257 A CN110999257 A CN 110999257A
- Authority
- CN
- China
- Prior art keywords
- server
- transfer protocol
- delivery method
- hypertext transfer
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
-
- 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/04—Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
提供了方法和包括计算机程序产品的装置,以用于异步通知的传送方法选择。在一些示例实施例中,可以提供一种方法,该方法包括由客户端发送对于将要由服务器向客户端发送的至少一个异步通知的超文本传输协议请求,该超文本传输协议请求包括用于携带至少一个异步通知的至少一种提议的传送方法;由客户端确定由服务器从至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及当确定第一传送方法未被成功建立时,由客户端向服务器发送另一超文本传输协议请求,该另一超文本传输协议请求包括至少一种其他提议的传送方法。还描述了相关的***、方法和制品。
Description
技术领域
这里描述的主题涉及服务器通知(其可以包括异步通知)的递送。
背景技术
超文本传输协议(HTTP)是指通常用于客户端服务器框架中的传输的请求响应协议。HTTP通常在万维网(WWW)中使用。例如,客户端应用(诸如网络浏览器)可以向服务器(诸如合到互联网的网站)提交HTTP请求消息。在该示例中,给服务器的请求可以允许客户端从服务器获取数据,将数据发布到服务器,删除存储在服务器上的数据,和/或执行其他动作。网站服务器可以向客户端应用返回响应,该响应包括客户端的请求的完成状态、由客户端请求的内容等。HTTP可以符合一个或多个标准,诸如互联网工程任务组(IETF)、请求注释(RFC)1945(HTTP版本1.0)、RFC 7230-7235(HTTP版本1.1)、RFC 7540(HTTP版本2.0)和/或其他标准。除了WWW,HTTP还可以用于其他应用中的传输。例如,第三代合作伙伴计划(3GPP)在某些标准中包括HTTP的使用(例如,参见3GPPP TS 29.122,“北向API的T8参考点”)。
发明内容
提供了包括计算机程序产品的方法和设备,用于异步通知的传送方法选择。
在一些示例实施例中,可以提供一种方法,该方法包括由客户端发送对要由服务器向客户端发送的至少一个异步通知的超文本传输协议请求,该超文本传输协议请求包括用于携带至少一个异步通知的至少一种提议的传送方法;由客户端确定由服务器从至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及当确定第一传送方法未成功建立时,由客户端向服务器发送另一超文本传输协议请求,该另一超文本传输协议请求包括至少另一提议的传送方法。
在一些变型中,本文中公开的包括以下特征的一个或多个特征可以可选地以任何可行的组合被包括。超文本传输协议请求可以包括用于使得能够进行到客户端的反向超文本传输协议回调的在客户端处的回调统一资源标识符。超文本传输协议请求可以包括对于服务器的经由测试通知消息来探测第一传送方法是否被成功建立的请求。至少一种提议的传送方法可以包括反向超文本传输协议、websocket和/或长轮询。第一传送方法可以至少基于以下各项而被确定为被成功建立:在超时之前从服务器接收的消息、在超时之前从服务器接收的测试通知、在超时之前从服务器接收的ping、从服务器接收的携带服务器处的websocket统一资源标识符的消息、和/或在超时之前从服务器接收的对由客户端发送的ping的应答。当确定第一传送方法被成功建立时,客户端可以接收经由第一传送方法携带的至少一个异步通知。由服务器选择的第一传送方法可以由客户端在对超文本传输协议请求的应答中接收并且由显式参数指示。应答可以包括websocket统一资源标识符。应答可以包括用于与长轮询一起使用的超文本传输协议统一资源标识符。至少一种提议的传送方法可以通过显式参数在超文本传输协议请求中指示。该请求可以包括回调统一资源标识符。第一传送方法可以包括反向超文本传输协议。另一传送方法可以包括websocket。长轮询可以表示当第一传送方法和另一传送方法未成功建立时的默认传送方法。客户端和服务器可以使用超文本传输协议用于其他类型的数据的传输。
在一些示例实施例中,可以提供一种方法,该方法包括由服务器接收对于服务器的发送至少一个异步通知的超文本传输协议请求,该超文本传输协议请求包括用于携带至少一个异步通知的至少一种提议的传送方法;由服务器发送关于由服务器从至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示;由服务器发送用以探测第一传送方法的建立的消息;以及当第一传输未被接受以用于建立和/或未成功建立时,由服务器接收包括至少另一提议的传送方法的另一超文本传输协议请求。
在一些变型中,本文中公开的包括以下特征的一个或多个特征可可选地以任何可行的组合被包括。超文本传输协议请求可以包括用于使得能够进行到客户端的反向超文本传输协议回调的在客户端处的回调统一资源标识符。超文本传输协议请求可以包括对于服务器的经由测试通知消息来探测建立的请求。该指示可以包括在超时之前发送给客户端的消息、在超时之前发送该客户端的测试通知、在超时之前发送给客户端的ping。该消息可以包括服务器处的统一资源标识符。当第一传输被服务器接受以用于建立和/或被成功建立时,服务器可以发送经由第一传送方法携带的至少一个异步通知。由服务器选择的第一传送方法可以由客户端在对超文本传输协议请求的应答中接收并由显式参数指示。应答可以包括websocket统一资源标识符。应答可以包括用于与长轮询一起使用的超文本传输协议统一资源标识符。至少一种提议的传送方法可以通过显式参数在超文本传输协议请求中指示。该请求可以包括回调统一资源标识符。第一传送方法可以包括反向超文本传输协议。另一传送方法可以包括websocket。长轮询可以表示当第一传送方法和另一传送方法未成功建立时的默认传送方法。客户端和服务器可以使用超文本传输协议用于其他类型的数据的传输。
上述方面和特征可以根据期望的配置在***、装置、方法和/或物品中实现。本文中描述的主题的一个或多个变型的细节在附图和以下描述中阐述。根据说明书和附图以及权利要求,本文中描述的主题的特征和优点将很清楚。
附图说明
在附图中,
图1A描绘了根据一些示例实施例的客户端和服务器的示例;
图1B描绘了根据一些示例实施例的用于为服务器通知而协商传送方法的过程的示例;
图2描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知而创建反向HTTP传送方法的过程的示例;
图3描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知而创建Websocket传输的过程的示例;
图4描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知而创建长轮询传输的过程的示例;
图5A-5B示出了根据一些示例实施例的过程的示例;以及
图6描绘了根据一些示例实施例的装置的示例。
类似标记在附图中用于指代相同或相似的项目。
具体实施方式
很多应用都要求从应用程序编程接口(API)服务器向API客户端发送异步通知。但是,在HTTP中,通常仅允许客户端发送HTTP请求,而仅允许服务器响应于客户端的请求。这样,由服务器在HTTP框架中发送异步通知可能被认为是有问题的。从异步通知消息未响应于API客户端的请求的意义上说,“异步通知”可以是指由服务器以未经请求的方式(例如,异步地)发送的消息。
考虑到指出的异步通知问题,解决方案可以是使用所谓的“反向HTTP”连接方法。该反向HTTP连接方法可以包括第二单独的HTTP连接,其中客户端和服务器角色相反,以使得通知能够作为由API服务器发送给API客户端的HTTP请求进行传输。在该第二连接上,API客户端充当HTTP服务器,而API服务器充当能够发送请求(诸如通知,包括异步通知)的HTTP客户端。在第二连接上,如果API客户端位于防火墙后面,则防火墙可能会阻止向该API客户端发送的请求。
图1A描绘了包括第一HTTP连接192和第二单独的HTTP连接194的API客户端1101和API服务器1121的示例,在服务器1121充当连接194的HTTP客户端(“C”)而客户端1101充当第二连接194的HTTP服务器(“S”)的意义上,这是相反的。客户端1101和/或服务器1121可以在计算机、平板电脑、智能电话和/或其他基于处理器的设备上实现。客户端1101和/或服务器1121可以经由一个或多个网络来建立HTTP连接192和194,包括互联网、蜂窝网络等。此外,可以经由有线和/或无线链路来建立HTTP连接192和/或194。为了进一步说明,第一计算机可以包括API客户端1101,API客户端1101可以经由有线和/或无线链路建立到第二计算机(诸如网站服务器,包括API服务器1121)的HTTP连接192。
指出的异步通知问题的另一解决方案是Websocket协议,该Websocket协议可以经由传输控制协议(TCP)提供全双工传输通道。因此,WebSocket协议可以为服务器提供一种将内容异步发送给客户端的方式(例如,无需客户端请求)。Websocket协议可以符合IETFRFC 6455“2011年11月的WebSocket协议”。
借助于符合RFC 6455的Websocket协议,最初将HTTP用作客户端服务器握手的一部分以建立传输连接,并且在该建立之后,随后的传输被转换为根据Websocket协议执行的全双工WebSocket传输(因此某些HTTP特征(诸如成帧等)在转换之后可能不可用)。但是,Websocket协议确实可以在被配置为允许通过HTTP穿越的大多数现代防火墙中起作用(假定防火墙还允许将HTTP连接升级到Websocket)。
所提出的异步通知问题的另一种解决方案是基于HTTP协议的“长轮询”(例如,参见2011年4月的RFC 6202“在双向HTTP中使用长轮询和流传输的已知问题和最佳实践”)。在HTTP传输中,服务器可能无法启动与客户端的连接或未向客户端发送未请求的HTTP响应,因此服务器无法向客户端发送异步通知。使用长轮询,服务器尝试保持打开(对于(例如,不立即应答)每个HTTP请求,因此服务器可以在存在要递送的事件时对客户端做出响应,因此,服务器具有未决的客户端请求,服务器可以出于递送事件的目的而响应于这样的未决的客户端请求,诸如在它们发生时的通知/异步通知。
长轮询可以在可以通过HTTP穿越的大多数防火墙中起作用,并且长轮询可能不需要如Websocket协议那样开发额外的框架等。但是,与Websocket协议或反向HTTP方法相比,长轮询可能被认为具有较低的性能。
上面提到的针对异步通知问题的三种解决方案清楚地表明,没有一种“一刀切”的解决方案。在一些示例实施例中,提供了一种经由协商来选择在客户端与服务器之间使用哪种传输机制的方法。在一些示例实施例中,可以提供一种经由协商从多种HTTP传送方法中选择的方式。在一些示例实施例中,多种HTTP传送方法可以包括反向HTTP方法、Websocket方法和/或长轮询方法。根据一些示例实施例,可以探测所选择的方法以确定所选择的方法是否可以成功实现(例如,通过防火墙建立和/或操作)。在一些示例实施例中,所选择的传送方法可以由服务器用来向客户端发送包括异步通知的通知,但是,HTTP可以继续用于其他类型的传输。
如果客户端(诸如API客户端)需要从服务器(诸如API服务器)接收异步通知,则客户端可以向服务器发送请求(诸如消息)以指示服务器发送通知,诸如异步通知。根据一些示例实施例,在该请求内,客户端可以向服务器指示客户端支持或允许哪种(哪些)传送方法用于服务器的通知(诸如异步通知)。
在一些示例实施例中,客户端可以发送作为协商的一部分向服务器提议单一传送方法(诸如反向HTTP连接方法)的请求。根据一些示例实施例,如果该单一传送方法被服务器接受和/或成功建立(setup)/建立(establish),则服务器可以开始经由所选择的传送方法向客户端发送诸如异步通知等的通知。根据一些示例实施例,如果该单一传送方法未被服务器接受和/或建立(setup)/建立(establish)未成功,则作为协商的一部分,客户端可以提出另一传输请求。为了说明,如果客户端请求服务器使用反向HTTP进行异步通知,但是服务器不支持提议的反向HTTP,则服务器可以拒绝该请求。
在一些示例实施例中,客户端可以发送作为协商的一部分向服务器提议多种传送方法的请求。在这种情况下,服务器可以利用所选择的传送方法的指示进行响应。根据一些示例实施例,如果所选择的传送方法可以被成功地建立(setup)/建立(establish),则服务器可以开始经由所选择的传送方法向客户端发送诸如异步通知等通知。根据一些示例实施例,如果所选择的传送方法未被成功建立(setup)/建立(establish),则可以提出和/或选择另一传输请求以供服务器使用。
此外,例如,当客户端发送作为协商的一部分向服务器提议多种传送方法的请求时,服务器可以选择传送方法之一,并且可以使用所选择的传送方法来响应客户端。替代地或另外地,例如,客户端可以发送作为协商的一部分向服务器提议单一传送方法的请求,服务器可以接受该传送方法,并且可以使用所选择的传送方法来响应客户端。随后,服务器和客户端可以经由所选择的(例如,接受的)传送方法来交换消息以探测所选择的传送方法的可行性。如果探测成功,则客户端和服务器可以使用协商的传送方法来递送包括来自服务器的异步通知的通知。但是,如果探测失败(例如,由于无法穿越防火墙或其他原因),则客户端可以发送另一请求消息以作为协商的一部分向服务器提议另一传送方法,在这种情况下,重复进行可行性探测,直到选择了可行的传送方法。如果对传送方法的探测失败(例如,反向HTTP),则客户端可以向服务器发送提议另一传送方法(例如,Websocket)的请求。如果服务器接受其他传送方法,则可以再次执行探测以确定所选择的传送方法的可行性。可以重复该过程,直到接受了一种传送方法,并且经由探测认为该方法可使用。
在一些示例实施例中,诸如API客户端的客户端最初可以提供诸如反向HTTP的传送方法。如果所选择的传送方法的探测失败(例如,由于防火墙阻止而无法接受、被拒绝或无法建立连接),则API客户端可以提供另一传送方法,诸如Websocket方法或长轮询方法。例如,在建立(setup)和建立(establish)Websocket传输或长轮询传输期间,防火墙可能会导致故障。尽管反向HTTP失败的可能性更高,但与Websocket或长轮询相比,反向HTTP可能最初由API客户端向API服务器提议,然后其他两种方法作为反向HTTP被认为是实现最简单或最有效的三种传送方法。
尽管一些示例提及在API客户端与API服务器之间的协商中首先提议的反向HTTP,但是可以首先提议其他方法。此外,尽管一些示例涉及在反向HTTP、websocket和长轮询中进行选择,但是选择还可以包括其他传送方法,包括HTTP流传输等。此外,也可以在传送方法的选择池中选择少于或多于3种传送方法。
在反向HTTP中,API客户端可以向API服务器提供回调统一资源标识符(URI)。该回调URI可以向服务器标识API客户端处的IP地址和/或资源,但是URI可以标识API服务器应当对通知消息执行回调的另一节点。在向API客户端发送初始异步通知之前,API服务器可以建立指向回调URI的HTTP连接。API服务器处的API客户端的回调URI设置还可以指示API客户端支持经由反向HTTP接收单独的HTTP连接。
如上所述,由于防火墙(或未能建立反向HTTP连接,或由于其他原因),从API服务器到API客户端的通知发送可能失败。在一些示例实施例中,可以使用探测来测试HTTP连接成功穿越防火墙(如果存在)的能力。以下示出了根据一些示例实施例的探测技术的两个示例。
第一探测技术可以包括发送测试通知。例如,根据一些示例实施例,应用框架(由API服务器提供并且由API客户端访问)可以定义可以用于探测的测试通知消息。API服务器可以将测试通知消息发送给由API客户端提供的回调URI。在一些示例实施例中,API客户端可以在携带回调URI的相同消息中向API服务器请求测试通知,尽管对于测试通知消息的请求也可以以其他方式被携带或发信号通知给API服务器。如果API客户端在超时(例如,计时器到期)之前接收到服务器的测试通知,则API客户端知道反向HTTP成功运行。
当回调URI指向另一节点(例如,与API客户端分离的节点)时,另一节点可以向API客户端通知由API服务器发送的测试通知的接收。如果在超时之前向API客户端通知有关从另一节点对测试通知的接收的信息,则API客户端将知道反向HTTP方法成功运行。
根据一些示例实施例,如果API服务器在超时到期之前接收到在URI回调位置(例如,在API客户端或单独的节点处)接收的测试通知的确认,则API服务器知道反向HTTP传输成功运行,在这种情况下,API服务器可以开始使用反向HTTP来向API客户端发送包括异步通知的通知消息。
根据一些示例实施例,还可以实现第二探测技术。在第二探测技术中,API服务器可以向回调URI发送HTTP GET(或其他请求类型,诸如HEAD、空的POST等)请求。如果API客户端在超时到期之前接收到API服务器的HTTP GET请求,则API客户端知道反向HTTP成功运行。根据一些示例实施例,如果API服务器在超时到期之前接收到HTTP成功响应,则可以认为探测成功,在这种情况下,API服务器可以开始使用反向HTTP传送方法向API客户端发送包括异步通知的通知消息。客户端和服务器可能会继续使用HTTP进行其他类型的数据传输。
本文中的一些示例涉及超时。超时可以被实现为计时器。超时的值可以在API客户端和/或API服务器处被配置。替代地或另外地,超时值可以经由API客户端与API服务器之间的消息交换来协商。例如,API客户端可以向API服务器发送包括回调URI和提议的超时值的消息(其可以被API服务器接受或作为协商的一部分进行修改)。
根据一些示例实施例,当API客户端支持经由Websocket传送方法从API服务器接收通知/异步通知时,API客户端可以在发送给API服务器的初始HTTP请求消息中指示Websocket支持。响应于初始请求消息,API服务器可以使用Websocket URI(根据Websocket协议还可以包括“ws”或“wss”、主机名、可选端口和/或可选路径)来响应API客户端。API服务器的响应(可以包括Websocket URI)可能指示API服务器选择Websocket传送方法作为协商的一部分。
在接收到该Websocket URI后,API客户端可以建立指向Websocket URI的单独的HTTP连接。接下来,API客户端可以根据IETF RFC 6455使用HTTP升级机制将HTTP连接转换为Websocket连接。替代地或另外地,在接收到Websocket URI时,API客户端可以请求另一节点建立指向该Websocket URI的HTTP连接,在这种情况下,另一节点可以使用HTTP升级机制按照IETF RFC 6455将该HTTP连接转换为Websocket连接。
如上所述,Websocket连接的建立可能由于防火墙而失败。根据一些示例实施例,为了针对使用所选择的Websocket传送方法来探测防火墙是否可能导致失败,可以执行探测。
探测Websocket连接的一种方式可以是评估Websocket本身的建立。如果在发生超时之前使用RFC 6455中的过程成功建立了Websocket连接,则可以认为探测成功。由于Websocket协议的设计,这可以在客户端和服务器两者处确定。如果API客户端请求另一节点建立Websocket连接,则当Websocket连接的建立完成时,另一节点可以通知API客户端。如果在超时发生之前向API客户端通知Websocket连接建立的完成,则API客户端可以知道Websocket传输已经成功工作。
探测Websocket连接的另一种方式是使用测试通知。例如,如果应用框架实现测试通知消息,则API服务器可以在Websocket连接的建立之后发送测试通知消息以探测Websocket连接。在一些示例实施例中,API客户端可以请求API服务器在请求使用Websocket的同一消息中使用测试通知消息。如果API客户端在超时之前接收到测试通知,则API客户端知道Websocket成功运行。如果API客户端请求另一节点建立Websocket连接,则另一节点可以在接收到测试通知时通知API客户端。如果在超时发生之前向API客户端通知有关测试通知的接收,则API客户端知道Websocket成功运行。根据一些示例实施例,如果API服务器在超时之前接收到测试通知的确认,则API服务器知道Websocket成功运行,在这种情况下,API服务器可以开始使用反向HTTP方法向API客户端发送包括异步通知的通知消息。
测试Websocket的另一种方式是在Websocket连接的建立之后根据IETF RFC 6455使用ping-pong过程。如果ping-pong过程完成,则该过程的发起者(可以是API客户端或API服务器)知道Websocket正在双向工作,并且发起者可以使用Websocket方法。如果API客户端请求另一节点建立Websocket连接,则另一节点可以启动ping-pong过程。当ping-pong过程完成时,另一节点可以通知API客户端。如果在超时之前向API客户端通知有关ping-pong过程的完成的信息,则API客户端知道Websocket成功运行。如果发生超时,但尚未向API客户端通知有关ping-pong过程的完成,则API客户端可以向API服务器提供另一传送方法。
在一些示例实施例中,在以下意义上,长轮询方法可以被认为是通用回退:如果反向HTTP方法和上面提到的Websocket方法不能使用(例如,如果传输或探测的建立未成功),则可以选择或协商在API客户端与API服务器之间使用长轮询传送方法。
根据一些示例实施例,如果API客户端支持使用长轮询来进行诸如来自API服务器的异步通知的通知,则API客户端可以向API服务器发送建立长轮询的请求。当API客户端从API服务器请求建立长轮询以进行通知递送时,API服务器可以在对请求的响应中包括长轮询URI。该长轮询URI可以指示API客户端随后可以经由长轮询从哪个URI获取包括异步通知的通知。在来自API服务器的响应中包括长轮询URI也可以向API客户端指示API服务器选择要使用的长轮询方法。在接收到该长轮询URI时,API客户端可以在服务器处建立指向长轮询URI的单独的HTTP连接,并且然后API客户端可以将第一长轮询请求发送给API服务器处的长轮询URI。替代地或另外地,在接收到该长轮询URI时,API客户端可以请求另一节点建立指向长轮询URI的HTTP连接,并且该另一节点可以将第一长轮询请求发送给API服务器。
可以通过发送测试通知消息来探测长轮询连接。如果应用框架支持使用测试通知消息进行探测,则API服务器可以在从API客户端接收到第一轮询请求之后通过长轮询连接发送测试通知消息。API客户端可以在发送给提议使用长轮询的API服务器的初始请求消息中请求使用测试通知。如果API服务器在超时发生之前接收到轮询请求(在该示例中为测试通知),则API服务器可以知道长轮询成功运行,在这种情况下,API服务器可以开始使用长轮询进行到API客户端的包括异步通知的通知。如果API客户端在超时发生之前接收到该测试通知,则API客户端可以知道长轮询成功运行。如果API客户端请求另一节点建立长轮询连接,则另一节点可以在超时发生之前向API客户端通知该通知已经被其他节点接收,在这种情况下,API客户端知道长轮询正在成功工作。
尽管先前的示例涉及长轮询的探测,但是在某些示例实施例中,与其他传送方法相比,由于成功进行长轮询连接建立(甚至通过防火墙)的可能性非常高,因此可以省略对长轮询连接的探测。
图1B描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知而选择传送方法的过程100的示例。
在115,根据一些示例实施例,可以创建订阅以指示反向HTTP可以用于在API客户端110与API服务器112之间的连接上的传输以启用诸如异步通知消息的服务器通知消息。API客户端110可以提出用于连接的反向HTTP传送方法以仅携带由API服务器发送给API客户端的诸如异步通知的通知,使得例如客户端110与服务器112之间的其他类型的传输可以根据HTTP而保留。订阅是指定义客户端意图被告知服务器处的事件的数据记录,因此,订阅可以定义如下事件:针对这些事件,客户端希望从服务器接收诸如异步通知的通知。例如,订阅可以将范围限制为特定事件(例如,通过定义仅与这些特定事件相匹配的过滤器),或者可以应用于服务器可以向客户端发出的所有通知。订阅还可以包括与通知的递送有关的信息,诸如传送方法、诸如URI等参数、要使用的探测技术等。此外,订阅可以包括关于订阅的有效时间的信息。
如果在116提议的反向HTTP的使用被API服务器112接受和/或探测表明反向HTTP正在成功工作,则API服务器可以在118将反向HTTP用于由API服务器发送给API客户端的异步通知。对于到API服务器的其他类型的数据传输,API客户端可以继续使用HTTP,而不是反向HTTP。
如果在120提议使用反向HTTP的协商未成功(例如,未被API服务器112接受和/或探测表明反向HTTP由于例如防火墙而无法正常工作),则API客户端110可以在122提议Websocket传送方法用于携带由API服务器发送给API客户端的通知的连接。该提议可以采用订阅更新的形式。
如果API服务器112接受了Websocket传送方法的提议使用和/或在124探测指示Websocket正在成功工作,则API服务器可以在126将Websocket传输用于由API服务器发送给API客户端的异步通知。对于其他类型的数据传输,API客户端和服务器可以继续使用HTTP,而不是Websocket。
如果在130处Websocket方法的提议使用失败(例如,API服务器未接受和/或探测指示Websocket由于例如防火墙而无法成功工作),则API客户端110可以在132提议长轮询传送方法用于携带由API服务器发送给API客户端的异步通知的连接。
如果在140处API服务器接受了对长轮询方法的提议使用和/或探测指示长轮询正在成功工作,则API服务器112可以在142使用长轮询传送方法用于由API服务器提供给API客户端的通知。对于其他类型的数据传输,API客户端和/或API服务器可以继续使用HTTP,而不是长轮询。
如果在150处长轮询的提议使用未成功(例如,API服务器不接受和/或探测表明长轮询由于例如防火墙而无法成功工作),则可以生成错误。
图2描绘了根据一些示例实施例的用于为携带从服务器112到客户端110的诸如异步通知的通知的连接而创建反向HTTP传送方法订阅的示例过程200。
在202,根据一些示例实施例,API客户端110可以向API服务器112发送HTTP请求,诸如POST,并且该HTTP请求可以包括订阅资源(订阅数据集),该订阅资源包括回调URI。根据一些示例实施例,响应于接收到包括回调URI的HTTP请求,API服务器112可以在204以“未确认”状态创建订阅资源。根据一些示例实施例,API服务器可以在206发送所创建的订阅的副本,包括诸如回调URI和/或超时值的数据。
在210,根据一些示例实施例,可以由API服务器112执行反向HTTP的探测。为此,根据一些示例实施例,API服务器112可以在212将包括测试通知的HTTP POST请求发送给回调URI。根据一些示例实施例,API服务器112还可以在214通过向回调URI发送HTTP GET(或HEAD、POST等)来检查回调URI是否可达。探测和/或可达性检查可以指示是否可以在API服务器112与API客户端110之间成功使用反向HTTP传输。
如果API客户端110的回调URI由API服务器112经由HTTP可达(220),则API服务器可以在222将订阅状态设置为“已确认”,并且在224开始使用反向HTTP方法用于通知,诸如由API服务器发送给API客户端的异步通知。对于其他类型的数据传输,API客户端和/或API服务器可以继续使用HTTP,而非反向HTTP。
根据一些示例实施例,如果API客户端110的回调URI不能由API服务器112经由HTTP可达(230),则可以认为结果未成功(236),因此API客户端可以提议另一传送方法。根据一些示例实施例,如果API客户端110在超时之内未接收到测试通知和/或未接收到对回调URI的HTTP请求(232),则在236,API客户端可以将反向HTTP的使用视为未成功。替代地或另外地,根据一些示例实施例,如果API服务器112未接收到对测试通知的响应和/或对对回调URI的HTTP请求的响应(234),则在236,API服务器123可以将反向HTTP的使用视为未成功。
图3描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知而更新订阅122以提议Websocket传输的示例过程300。
在302,根据一些示例实施例,API客户端110可以发送HTTP请求,诸如PUT、PATCH等,该HTTP请求包括应当将订阅更新为Websocket传送方法的指示。在302发送的请求可以向API服务器112指示API客户端110作为与API服务器的协商的一部分支持Websocket传输。在304,根据一些示例实施例,API服务器112可以更新订阅以将Websocket订阅示出为“未确认”,并且可以创建Websocket URI。在306,根据一些示例实施例,API服务器112可以将包括Websocket URI和/或超时值的更新后的订阅的副本返回给API客户端110。在308,根据一些示例实施例,出于处理诸如从服务器112到客户端110的异步通知等通知的目的,向Websocket URI打开Websocket连接。
在312,如果API服务器112成功接收到Websocket连接建立消息,则API服务器112可以认为Websocket连接是成功的。但是,可能还需要在314/316和/或318/319进行进一步探测以确认操作。为了探测,API服务器112可以在314向API客户端110发送测试通知消息。如果API客户端110通过例如在超时值之前发送消息316来确认接收到测试通知消息,则API服务器112可以认为Websocket连接成功。替代地或另外地,API服务器112可以在318向API客户端110发送ping消息。如果API客户端110通过例如在超时值之前发送诸如ping-pong319等消息来确认接收到ping消息,API服务器112可以认为Websocket连接成功。
如果认为成功建立了Websocket连接,则在332,API服务器可以将订阅状态更新为“已确认”,并且在334开始使用Websocket连接用于通知,诸如由API服务器发送给API客户端的异步通知。对于其他类型的数据传输,API客户端和服务器可以继续使用HTTP,而不是Websocket。
在342和344,如果314/316和/或318/319的Websocket连接建立消息和/或探测失败,则在348,API客户端110和API服务器112可以认为Websocket的使用未成功。在这种情况下,可以提出另一种方法。
图4描绘了根据一些示例实施例的用于为异步发送给客户端的服务器通知更新订阅132以提议长轮询传输的示例过程400。
在402,根据一些示例实施例,API客户端110可以向API服务器112发送HTTP请求,诸如PUT、PATCH等,该HTTP请求包括关于应当将订阅更新为长轮询传送方法的指示。在402发送的请求可以向API服务器112指示API客户端支持长轮询传送方法,并且作为协商的一部分,提议使用长轮询。在404,根据一些示例实施例,API服务器112可以更新订阅以将长轮询订阅示出为“未确认”,并且可以创建长轮询URI。在406,根据一些示例实施例,API服务器112可以将包括长轮询URI和/或超时值的更新后的订阅的副本返回给API客户端110。
在408,根据一些示例实施例,API服务器112可以提供API客户端110经由长轮询获取的测试通知。如果长轮询成功(即,客户端110已经成功获取测试通知),则API服务器112可以在410将订阅状态更新为“已确认”,并且在412开始使用长轮询传输用于通知,诸如由API服务器向API客户端提供的异步通知。对于其他类型的数据传输,API客户端和服务器可以继续使用HTTP,而不是长轮询。
然而,如果长轮询未成功(即,在超时414/416内未成功获取测试通知),则API客户端110和API服务器112可以在450认为使用长轮询未成功,在这种情况下可以生成错误。
图5A描绘了根据一些示例实施例的示例过程500。
在一些示例实施例中,根据一些示例实施例,诸如客户端API 110的客户端可以在510请求将要由服务器112向客户端110发送的异步通知。该请求可以包括用于携带异步通知的至少一种提议的传送方法,诸如反向HTTP、websocket和/或长轮询。如上所述,该请求可以包括一组传送方法,或者可以包括单个传送方法。该请求可以包括其他参数,诸如用于反向HTTP的回调URI、对于探测的请求(和/或探测的类型)等。此外,该请求可以包括HTTP请求。此外,HTTP请求可以包括客户端处的回调统一资源标识符,用以使得能够进行到客户端的反向超文本传输协议回调。替代地或另外地,HTTP请求可以包括对于服务器的、用以例如经由测试通知消息来探测第一传送方法是否被成功建立的请求。
在520,根据一些示例实施例,客户端110可以确定由服务器112从至少一种提议的传送方法中选择的第一传送方法是否被成功建立。例如,所选择的第一传送方法的成功建立可以是在客户端与服务器之间的第一传送方法的建立和/或探测的结果。
在530,根据一些示例实施例,在确定第一传送方法未被成功建立时,客户端110可以向服务器112发送包括至少另一提议的传送方法的另一超文本传输协议请求。例如,如果第一传送方法未被成功建立,则客户端110可以发送针对该传送方法的另一提议以允许服务器选择用于携带异步通知的另一传送方法。
图5B描绘了根据一些示例实施例的示例过程599。
在560,根据一些示例实施例,诸如服务器112的服务器可以从客户端110接收对于服务器的、用以发送至少一个异步通知的超文本传输协议请求。超文本传输协议请求可以包括用于携带至少一个异步通知的至少一种提议的传送方法。
在一些示例实施例中,在565,服务器112可以向客户端发送关于由服务器从至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示。例如,服务器可以基于其能力从至少一种提议的传送方法中选择第一传送方法。
在568,根据一些示例实施例,服务器112可以发送用以探测第一传送方法的建立的消息。如上所述,该消息可以探测第一传送方法,诸如反向HTTP、websocket等。该消息可以包括测试通知消息、ping/消息和/或其他类型的消息,包括对来自客户端110的请求的响应消息。
根据一些示例实施例,当第一传输未被接受以用于建立和/或未被成功建立时,服务器112可以在570从客户端110接收包括至少另一种提议的传送方法的另一超文本传输协议请求。如上所述,如果客户端最初提议反向HTTP,则对服务器112的另一请求可以提议例如Websocket或长轮询。
图6示出了根据一些示例实施例的装置10的框图。
在一些示例实施例中,装置10可以提供基于处理器的设备,诸如计算机、平板电脑、智能电话、手机、物联网(IoT)设备、网站服务器等。该装置可以包括有线和/或无线接口以使得能够建立有线和/或无线链路。例如,根据一些示例实施例,第一装置10可以包括API客户端110,而第二装置10可以包括服务器112。在这种情况下,根据一些示例实施例,可以如本文中描述的那样选择和探测传送方法。
在一些示例实施例中,客户端和/或服务器可以在诸如装置10等装置处实现。在一些示例实施例中,装置10可以(经由有线和/或无线连接)耦合到互联网、IP多媒体子***(IMS)和/或其他节点和/或网络。
此外,装置10可以被实现为专用传感器、IoT传感器等。例如,IoT传感器可以被实现为交通相机、温度传感器和/或固定地附接到建筑物或交通信号灯的其他类型的传感器,但是IoT传感器也可以是移动的。在IoT传感器的情况下,与例如智能电话相比,装置10可以包括功能更弱的处理器和/或更少的存储器。此外,IoT传感器可以经由另一设备访问蜂窝网络。例如,IoT传感器可以经由诸如蓝牙或WiFi等第一接口耦合到蜂窝网络、以及具有到蜂窝网络的第二接口的另一装置。
装置10可以包括与发射器14和接收器16通信的至少一个天线12。替代地,发射和接收天线可以是分开的。装置10还可以包括被配置为分别向发射器和接收器提供信号以及从发射器和接收器接收信号并且控制装置的功能的处理器20。处理器20可以被配置为通过经由到发射器和接收器的电引线实现控制信令来控制发射器和接收器的功能。同样地,处理器20可以被配置为通过经由将处理器20连接到其他元件(诸如显示器或存储器)的电引线实现控制信令来控制装置10的其他元件。处理器20可以例如以多种方式实施,包括电路、至少一个处理核、具有伴随的数字信号处理器的一个或多个微处理器、没有伴随的数字信号处理器的一个或多个处理器、一个或多个协处理器、一个或多个多核处理器、一个或多个控制器、处理电路、一个或多个计算机、包括集成电路(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)等)的各种其他处理元件、或其某种组合。因此,尽管在图6中示出为单个处理器,但是在一些示例实施例中,处理器20可以包括多个处理器或处理核。
装置10可以能够以一种或多种空中接口标准、通信协议、调制类型、接入类型等来操作。由处理器20发送和接收的信号可以包括符合适用的蜂窝***的空中接口标准的信令信息、和/或任何数目的不同的有线或无线联网技术,包括但不限于Wi-Fi、无线本地接入网络(WLAN)技术、诸如电气和电子工程师协会(IEEE)802.11、802.16、802.3、ADSL、DOCSIS等。另外,这些信号可以包括语音数据、用户生成的数据、用户请求的数据等。
例如,装置10和/或其中的蜂窝调制解调器可以能够根据各种第一代(1G)通信协议、第二代(2G或2.5G)通信协议、第三代(3G)通信协议、***(4G)通信协议、第五代(5G)通信协议、互联网协议多媒体子***(IMS)通信协议(例如,会话发起协议(SIP)等)进行操作。例如,装置10可以能够根据2G无线通信协议IS-136、时分多址TDMA、全球移动通信***GSM、IS-95、码分多址CDMA等进行操作。此外,例如,装置10可以能够根据2.5G无线通信协议通用分组无线电服务(GPRS)、增强型数据GSM环境(EDGE)等进行操作。此外,例如,装置10可以能够根据3G无线通信协议进行操作,诸如通用移动电信***(UMTS)、码分多址2000(CDMA2000)、宽带码分多址(WCDMA)、时分同步码分多址(TD-SCDMA)等。装置10还可以能够根据3.9G无线通信协议进行操作,诸如长期演进(LTE)、演进的通用地面无线电接入网络(E-UTRAN)等。另外,例如,装置10可以能够根据4G无线通信协议进行操作,诸如高级LTE、5G等以及随后可以开发的类似的无线通信协议。
可以理解,处理器20可以包括用于实现装置10的音频/视频和逻辑功能的电路。例如,处理器20可以包括数字信号处理器设备、微处理器设备、模数转换器、数模转换器等。装置10的控制和信号处理功能可以根据它们各自的能力在这些设备之间分配。处理器20可以另外包括内部语音编码器(VC)20a、内部数据调制解调器(DM)20b等。此外,处理器20可以包括操作可以存储在存储器中的一个或多个软件程序的功能。通常,处理器20和所存储的软件指令可以被配置为引起装置10执行动作。例如,处理器20可以能够操作连接程序,诸如网络浏览器。连接程序可以允许装置10根据诸如无线应用协议、WAP、超文本传输协议、HTTP、Websocket等协议来发射和接收网络内容,诸如基于位置的内容。
装置10还可以包括可以可操作地耦合到处理器20的用户接口,包括例如耳机或扬声器24、振铃器22、麦克风26、显示器28、用户输入接口等。如上所述,显示器28可以包括触敏显示器,其中用户可以触摸和/或做出手势以进行选择,输入值等。处理器20还可以包括被配置为控制用户接口的一个或多个元件(诸如扬声器24、振铃器22、麦克风26、显示器28等)的至少一些功能的用户接口电路。处理器20和/或包括处理器20的用户接口电路可以被配置为通过存储在处理器20可访问的存储器(例如,易失性存储器40、非易失性存储器42等)上的计算机程序指令(例如,软件和/或固件)来控制用户接口的一个或多个元件的一个或多个功能。装置10可以包括用于为与移动终端相关的各种电路供电的电池,例如,用于提供机械振动作为可检测输出的电路。用户输入接口可以包括允许装置20接收数据的设备,诸如小键盘30(其可以是呈现在显示器28上的虚拟键盘或外部耦合的键盘)和/或其他输入设备。
如图6所示,装置10还可以包括用于共享和/或获取数据的一个或多个机制。例如,装置10可以包括短程射频(RF)收发器和/或询问器64,因此数据可以根据RF技术与电子设备共享和/或从电子设备获取。装置10可以包括其他短程收发器,诸如红外(IR)收发器66、使用BluetoothTM无线技术进行操作的BluetoothTM(BT)收发器68、无线通用串行总线(USB)收发器70、BluetoothTM低能量收发器、ZigBee收发器、ANT收发器、蜂窝设备到设备收发器、无线局域链路收发器和/或任何其他短程无线电技术。例如,装置10并且特别是短程收发器可以能够向在装置附近(诸如在10米内)的电子设备传输数据和/或从其接收数据。包括Wi-Fi或无线局域网调制解调器的装置10还可以能够根据各种无线网络技术从电子设备发射和/或接收数据,包括6LoWpan、Wi-Fi、Wi-Fi低功率、WLAN技术、诸如IEEE802.11技术、IEEE 802.15技术、IEEE 802.16技术等。
装置10可以包括可以存储与移动用户相关的信息元素的存储器,诸如订户身份模块(SIM)38、可移除用户身份模块(R-UIM)、eUICC、UICC等。除了SIM之外,装置10还可以包括其他可移动和/或固定存储器。装置10可以包括易失性存储器40和/或非易失性存储器42。例如,易失性存储器40可以包括随机存取存储器(RAM),包括动态和/或静态RAM、片上或片外高速缓冲存储器等。可以是嵌入式的和/或可移除的非易失性存储器42可以包括例如只读存储器、闪存、磁存储设备、例如硬盘、软盘驱动器、磁带、光盘驱动器设备和/或媒体、非易失性随机存取存储器(NVRAM)等。与易失性存储器40类似,非易失性存储器42可以包括用于临时存储数据的高速缓存区域。易失性和/或非易失性存储器的至少一部分可以嵌入在处理器20中。存储器可以存储可以由该装置用来执行本文中公开的操作的一个或多个软件程序、指令、信息、数据等,上述操作包括例如由客户端发送对于将要由服务器向客户端发送的至少一个异步通知的超文本传输协议请求,该超文本传输协议请求包括用于携带至少一个异步通知的至少一种提议的传送方法;由客户端确定由服务器从至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及当确定第一传送方法未被成功建立时,由客户端向服务器发送另一超文本传输协议请求,该另一超文本传输协议请求包括至少一种其他提议的传送方法。替代地或另外地,存储器可以存储可以由该装置用来执行本文中公开的操作的一个或多个软件程序、指令、信息、数据等,上述操作包括例如由服务器接收对于服务器的用以发送至少一个异步通知的超文本传输协议请求,该超文本传输协议请求包括用于携带至少一个异步通知的至少一种提议的传送方法;由服务器发送关于由服务器从至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示;由服务器发送用以探测第一传送方法的建立的消息;以及当第一传输未被接受以用于建立和/或未成功建立时,由服务器接收包括至少一种其他提议的传送方法的另一超文本传输协议请求。
存储器可以包括能够唯一标识装置10的标识符,诸如国际移动设备标识(IMEI)码。存储器可以包括能够唯一标识装置10的标识符,诸如国际移动设备标识(IMEI)码。在示例实施例中,处理器20可以使用存储在存储器40和/或42处的计算机代码来配置以控制和/或提供本文中公开的一个或多个方面(例如,参见过程100、200、300、400、500、599和/或本文中公开的其他操作)。例如,处理器20可以被配置为使用存储在存储器40和/或42处的计算机代码来至少包括例如执行本文中公开的操作中的一个或多个,包括在过程100、200、300、400、500、599等处。
本文中公开的一些实施例可以用软件、硬件、应用逻辑或软件,硬件和应用逻辑的组合来实现。例如,软件、应用逻辑和/或硬件可以驻留在存储器40、控制装置20或电子组件上。在一些示例实施例中,应用逻辑、软件或指令集被保持在各种传统计算机可读介质中的任何一种上。在本文件的上下文中,“计算机可读介质”可以是任何非暂态介质,其可以包含、存储、传送、传播或传输指令以供指令执行***、装置或设备(诸如计算机或数据处理器电路)使用或与之相结合使用,示例在图6中描绘,计算机可读介质可以包括非暂态计算机可读存储介质,其可以是可以包含或存储指令以供指令执行***、装置或设备诸如计算机)使用或与之相结合使用的任何介质。
在不以任何方式限制下面出现的权利要求的范围、解释或应用的情况下,本文中公开的一个或多个示例实施例的技术效果可以通过启用客户端与服务器之间的针对传送方法的选择的协商来增强对异步服务器通知的传送方法选择的控制。
根据期望的配置,本文中描述的主题可以在***、装置、方法和/或物品中实施。例如,本文中描述的基站和用户设备(或其中的一个或多个组件)和/或过程可以使用以下中的一个或多个来实现:执行程序代码的处理器、专用集成电路(ASIC)、数字信号处理器(DSP)、嵌入式处理器、现场可编程门阵列(FPGA)和/或其组合。这些各种实现可以包括在包括至少一个可编程处理器(其可以是专用的或通用的)的可编程***上可执行和/或可解释的一个或多个计算机程序中的实现,该至少一个可编程处理器被耦合以从存储***、至少一个输入设备和至少一个输出设备接收数据和指令以及向其传输数据和指令。这些计算机程序(也称为程序、软件、软件应用、应用、组件、程序代码或代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或汇编/机器语言实现。如本文中使用的,术语“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、机器可读介质、计算机可读存储介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令的机器可读介质。类似地,本文中还描述了可以包括处理器和耦合到处理器的存储器的***。存储器可以包括引起处理器执行本文中描述的一个或多个操作的一个或多个程序。
尽管上面已经详细描述了一些变化,但是其他修改或添加也是可能的。特别地,除了本文中描述的那些之外,还可以提供另外的特征和/或变化。此外,上述实现可以涉及所公开的特征的各种组合和子组合和/或以上公开的若干另外的特征的组合和子组合。其他实施例可以在以下权利要求的范围内。
如果需要,本文中讨论的不同功能可以以不同顺序和/或彼此同时执行。此外,如果需要,上述功能中的一个或多个可以是可选的,或者可以组合。尽管在独立权利要求中阐述了一些实施例的各个方面,但是一些实施例的其他方面包括来自所描述的实施例和/或从属权利要求的特征与独立权利要求的特征的其他组合,而不仅仅是在权利要求中明确阐述的组合。本文中还应当注意,虽然以上描述了示例实施例,但是这些描述不应当被视为具有限制意义。而是,在不脱离在所附权利要求中限定的一些实施例的范围的情况下,可以进行若干变化和修改。其他实施例可以在以下权利要求的范围内。术语“基于”包括“至少基于”。除非另有说明,否则短语“诸如”的使用表示“诸如例如”。
Claims (36)
1.一种方法,包括:
由客户端发送对于将要由服务器向所述客户端发送的至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
由所述客户端确定由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及
当确定所述第一传送方法未被成功建立时,由所述客户端向所述服务器发送另一超文本传输协议请求,所述另一超文本传输协议请求包括至少一种其他提议的传送方法。
2.根据权利要求1所述的方法,其中所述超文本传输协议请求包括在所述客户端处的回调统一资源标识符,所述回调统一资源标识符用以使得能够进行回到所述客户端的反向超文本传输协议调用,和/或其中所述超文本传输协议请求还包括对于所述服务器经由测试通知消息来探测所述第一传送方法是否被成功建立的请求。
3.根据权利要求1至2中任一项所述的方法,其中所述至少一种提议的传送方法包括反向超文本传输协议、websocket和/或长轮询。
4.根据权利要求1至3中任一项所述的方法,其中所述第一传送方法至少基于以下而被确定为被成功建立:在超时之前从所述服务器接收的消息、在所述超时之前从所述服务器接收的测试通知、在所述超时之前从所述服务器接收的ping、和/或在超时之前从所述服务器接收的对由所述客户端发送的ping的应答。
5.根据权利要求1至4中任一项所述的方法,其中由所述服务器选择的所述第一传送方法由所述客户端在对所述超文本传输协议请求的应答中接收并且由显式参数指示,其中所述应答包括websocket统一资源标识符,和/或其中所述应答包括用于与长轮询一起使用的超文本传输协议统一资源标识符。
6.根据权利要求1至5中任一项所述的方法,其中所述至少一种提议的传送方法通过以下在所述超文本传输协议请求中被指示:所述显式参数和/或所述请求包含回调统一资源标识符。
7.根据权利要求1至6中任一项所述的方法,还包括:
当确定所述第一传送方法被成功建立时,由所述客户端接收经由所述第一传送方法携带的所述至少一个异步通知。
8.根据权利要求1至7中任一项所述的方法,其中所述第一传送方法包括所述反向超文本传输协议,其中所述至少一个其他传送方法包括所述websocket,其中所述长轮询表示当所述第一传送方法和所述其他传送方法未被成功建立时的默认传送方法,和/或其中所述客户端和所述服务器使用所述超文本传输协议用于其他类型的数据的传送。
9.一种方法,包括:
由服务器接收对于所述服务器发送至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
由所述服务器发送由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示;
由所述服务器发送用以探测所述第一传送方法的建立的消息;以及
当所述第一传输未被接受以用于建立和/或未被成功建立时,由所述服务器接收包括至少一种其他提议的传送方法的另一超文本传输协议请求。
10.根据权利要求9所述的方法,其中所述超文本传输协议请求包括在所述客户端处的回调统一资源标识符,所述回调统一资源标识符用以使得能够进行回到所述客户端的反向超文本传输协议调用,和/或其中所述超文本传输协议请求还包括对于所述服务器经由测试通知消息来探测建立的请求。
11.根据权利要求9至10中任一项所述的方法,其中所述指示包括接受或拒绝所述超文本传输协议请求的对所述请求的应答,其中所述第一传送方法由显式参数指示,其中所述应答包括websocket统一资源标识符,和/或其中所述应答包括用于与长轮询一起使用的超文本传输协议统一资源标识符。
12.根据权利要求9至11中任一项所述的方法,其中所述至少一种提议的传送方法通过以下在所述超文本传输协议请求中被指示:所述显式参数和/或所述请求包含回调统一资源标识符。
13.根据权利要求9至12中任一项所述的方法,还包括:
当所述第一传输被所述服务器接受以用于建立和/或被成功建立时,由所述服务器发送经由所述第一传送方法携带的所述至少一个异步通知。
14.根据权利要求9至13中任一项所述的方法,其中所述第一传送方法包括所述反向超文本传输协议,其中所述至少一个其他传送方法包括所述websocket,其中所述长轮询表示当所述第一传送方法和所述其他传送方法未被成功建立时的默认传送方法,和/或其中所述客户端和所述服务器使用所述超文本传输协议用于其他类型的数据的传送。
15.一种装置,包括:
至少一个处理器;以及
包括计算机程序代码的至少一个存储器,所述至少一个存储器和所述计算机程序代码被配置为与所述至少一个处理器一起使所述装置至少:
发送对于将要由服务器向所述装置发送的至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
确定由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及
当确定所述第一传送方法未被成功建立时,向所述服务器发送另一超文本传输协议请求,所述另一超文本传输协议请求包括至少一种其他提议的传送方法。
16.根据权利要求15所述的装置,其中所述超文本传输协议请求包括在所述装置处的回调统一资源标识符,所述回调统一资源标识符用以使得能够进行回到所述装置的反向超文本传输协议调用,和/或其中所述超文本传输协议请求还包括对于所述服务器经由测试通知消息来探测所述第一传送方法是否被成功建立的请求。
17.根据权利要求15至16中任一项所述的装置,其中所述至少一种提议的传送方法包括反向超文本传输协议、websocket和/或长轮询。
18.根据权利要求15至17中任一项所述的装置,其中所述第一传送方法至少基于以下而被确定为被成功建立:在超时之前从所述服务器接收的消息、在所述超时之前从所述服务器接收的测试通知、在所述超时之前从所述服务器接收的ping、和/或在超时之前从所述服务器接收的对由所述客户端发送的ping的应答。
19.根据权利要求15至18中任一项所述的装置,其中由所述服务器选择的所述第一传送方法由所述客户端在对所述超文本传输协议请求的应答中接收并且由显式参数指示,其中所述应答包括websocket统一资源标识符,和/或其中所述应答包括用于与长轮询一起使用的超文本传输协议统一资源标识符。
20.根据权利要求15至19中任一项所述的装置,其中所述至少一种提议的传送方法通过以下在所述超文本传输协议请求中被指示:所述显式参数和/或所述请求包含回调统一资源标识符。
21.根据权利要求15至20中任一项所述的装置,其中当确定所述第一传送方法被成功建立时,所述装置还被使得至少接收经由所述第一传送方法携带的所述至少一个异步通知。
22.根据权利要求15至21中任一项所述的装置,其中所述第一传送方法包括所述反向超文本传输协议,其中所述至少一个其他传送方法包括所述websocket,和/或其中所述长轮询表示当所述第一传送方法和所述其他传送方法未被成功建立时的默认传送方法,并且其中所述装置和所述服务器使用所述超文本传输协议用于其他类型的数据的传送。
23.根据权利要求15至22中任一项所述的装置,其中所述装置包括客户端或被包括在所述客户端中。
24.一种装置,包括:
至少一个处理器;以及
包括计算机程序代码的至少一个存储器,所述至少一个存储器和所述计算机程序代码被配置为与所述至少一个处理器一起使所述装置至少:
接收对于所述装置发送至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
发送由所述装置从所述至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示;
发送用以探测所述第一传送方法的建立的消息;以及
当所述第一传输未被接受以用于建立和/或未被成功建立时,接收包括至少一种其他提议的传送方法的另一超文本传输协议请求。
25.根据权利要求24所述的装置,其中所述超文本传输协议请求包括在所述客户端处的回调统一资源标识符,所述回调统一资源标识符用以使得能够进行回到所述客户端的反向超文本传输协议调用,和/或其中所述超文本传输协议请求还包括对于所述装置经由测试通知消息来探测建立的请求。
26.根据权利要求24至25中任一项所述的装置,其中所述指示包括接受或拒绝所述超文本传输协议请求的对所述请求的应答,其中所述第一传送方法由显式参数指示,其中所述应答包括websocket统一资源标识符,和/或其中所述应答包括用于与长轮询一起使用的超文本传输协议长轮询统一资源标识符。
27.根据权利要求24至26中任一项所述的装置,其中所述至少一种提议的传送方法通过以下在所述超文本传输协议请求中被指示:所述显式参数和/或所述请求包含回调统一资源标识符。
28.根据权利要求24至27中任一项所述的装置,其中当所述第一传输被所述装置接受以用于建立和/或被成功建立时,所述装置还被使得至少发送经由所述第一传送方法携带的所述至少一个异步通知。
29.根据权利要求24至28中任一项所述的装置,其中所述第一传送方法包括所述反向超文本传输协议,其中所述至少一个其他传送方法包括所述websocket,其中所述长轮询表示当所述第一传送方法和所述其他传送方法未被成功建立时的默认传送方法,并且其中所述客户端和所述装置使用所述超文本传输协议用于其他类型的数据的传送。
30.根据权利要求24至29中任一项所述的装置,其中所述装置包括服务器或被包括在所述服务器中。
31.一种包括程序代码的非暂态计算机可读介质,所述程序代码在被执行时引起操作,所述操作包括:
由客户端发送对于将要由服务器向所述客户端发送的至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
由所述客户端确定由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被成功建立;以及
当确定所述第一传送方法未被成功建立时,由所述客户端向所述服务器发送另一超文本传输协议请求,所述另一超文本传输协议请求包括至少一种其他提议的传送方法。
32.一种包括程序代码的非暂态计算机可读介质,所述程序代码在被执行时引起操作,所述操作包括:
由服务器接收对于所述服务器发送至少一个异步通知的超文本传输协议请求,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
由所述服务器发送由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示;
由所述服务器发送用以探测所述第一传送方法的建立的消息;以及
当所述第一传输未被接受以用于建立和/或未被成功建立时,由所述服务器接收包括至少一种其他提议的传送方法的另一超文本传输协议请求。
33.一种装置,包括:
用于由客户端发送对于将要由服务器向所述客户端发送的至少一个异步通知的超文本传输协议请求的部件,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
用于由所述客户端确定由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被成功建立的部件;以及
当确定所述第一传送方法未被成功建立时,用于由所述客户端向所述服务器发送另一超文本传输协议请求的部件,所述另一超文本传输协议请求包括至少一种其他提议的传送方法。
34.根据权利要求33所述的装置,还包括用于执行根据权利要求2至8中任一项所述的方法的部件。
35.一种装置,包括:
用于由服务器接收对于所述服务器发送至少一个异步通知的超文本传输协议请求的部件,所述超文本传输协议请求包括用于携带所述至少一个异步通知的至少一种提议的传送方法;
用于由所述服务器发送由所述服务器从所述至少一种提议的传送方法中选择的第一传送方法是否被接受以用于建立的指示的部件;
用于由所述服务器发送用以探测所述第一传送方法的建立的消息的部件;以及
用于当所述第一传输未被接受以用于建立和/或未被成功建立时,由所述服务器接收包括至少一种其他提议的传送方法的另一超文本传输协议请求的部件。
36.根据权利要求35所述的装置,还包括用于执行根据权利要求10至14中任一项所述的方法的部件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/045621 WO2019027480A1 (en) | 2017-08-04 | 2017-08-04 | TRANSPORT METHOD SELECTION FOR DISTRIBUTING SERVER NOTIFICATIONS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110999257A true CN110999257A (zh) | 2020-04-10 |
CN110999257B CN110999257B (zh) | 2022-05-10 |
Family
ID=59684059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780093632.9A Active CN110999257B (zh) | 2017-08-04 | 2017-08-04 | 用于服务器通知的递送的传送方法选择 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11323502B2 (zh) |
EP (1) | EP3662638B1 (zh) |
CN (1) | CN110999257B (zh) |
ES (1) | ES2894900T3 (zh) |
WO (1) | WO2019027480A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112788144A (zh) * | 2021-01-19 | 2021-05-11 | 深圳市位元领航科技有限公司 | 一种通信方式的实现方法、服务器以及客户端 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3777040A4 (en) * | 2018-04-05 | 2021-05-19 | Telefonaktiebolaget Lm Ericsson (Publ) | PROCEDURE AND NODE FOR NOTIFICATION SUBSCRIPTION |
EP3648502B1 (en) * | 2018-10-29 | 2022-02-23 | Giesecke+Devrient Mobile Security GmbH | Polling from device to ota core system via ota edge system |
US11936638B2 (en) * | 2019-06-28 | 2024-03-19 | Salesforce Inc. | Link protocol agents for inter-application communications |
CN115053507A (zh) * | 2020-03-17 | 2022-09-13 | Oppo广东移动通信有限公司 | 物联网通信方法及装置 |
JP2022021379A (ja) * | 2020-07-22 | 2022-02-03 | 株式会社リコー | 情報機器、方法およびプログラム |
EP4218219A4 (en) * | 2020-09-22 | 2024-06-12 | Nokia Technologies Oy | ERROR HANDLING OF RESPONSES |
CN112822237B (zh) * | 2020-12-28 | 2022-07-15 | 北京奇艺世纪科技有限公司 | 网络请求传输方法及装置 |
CN113766010B (zh) * | 2021-08-09 | 2024-06-28 | 深圳前海爱客风信息技术有限公司 | 数据流处理方法和装置 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6965917B1 (en) * | 1999-09-07 | 2005-11-15 | Comverse Ltd. | System and method for notification of an event |
WO2008103196A1 (en) * | 2007-02-22 | 2008-08-28 | St John Sean | Hanging request system and method for client/server communication |
CN101610183A (zh) * | 2009-07-21 | 2009-12-23 | 杭州华三通信技术有限公司 | 一种探测超文本传输协议服务器处理能力的方法及设备 |
US8117322B1 (en) * | 2009-12-10 | 2012-02-14 | Google Inc. | Latency reduction on HTTP servers |
CN102573111A (zh) * | 2012-01-10 | 2012-07-11 | 中兴通讯股份有限公司 | 传输控制协议资源的释放方法及装置 |
CN102624570A (zh) * | 2012-04-27 | 2012-08-01 | 杭州东信北邮信息技术有限公司 | 实现对web服务器可用性进行检测的监控***和方法 |
CN102939598A (zh) * | 2010-06-11 | 2013-02-20 | 惠普发展公司,有限责任合伙企业 | 基于http的客户机-服务器通信***和方法 |
US20130212227A1 (en) * | 2012-02-09 | 2013-08-15 | Cogent Real-Time Systems Inc. | System and method for streaming data via http |
CN103312807A (zh) * | 2013-06-20 | 2013-09-18 | 华为技术有限公司 | 数据传输方法、装置及*** |
CN104539510A (zh) * | 2014-12-02 | 2015-04-22 | 百纳(武汉)信息技术有限公司 | 一种基于多协议的信息推送***及方法 |
US20150200997A1 (en) * | 2013-04-23 | 2015-07-16 | Gurulogic Microsystems Oy | Communication system utilizing http |
US9521174B2 (en) * | 2010-10-19 | 2016-12-13 | Paul Matthew Davidge | Video script interpreter platform with cooperating client and server |
US20170026496A1 (en) * | 2010-10-29 | 2017-01-26 | Israel L'Heureux | Enhanced computer networking via multi-connection object retrieval |
CN106464728A (zh) * | 2014-11-25 | 2017-02-22 | 华为技术有限公司 | 处理通知信道断连的方法 |
CN106878267A (zh) * | 2010-11-08 | 2017-06-20 | 谷歌公司 | 建立全双工双向通信的方法和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100281108A1 (en) * | 2009-05-01 | 2010-11-04 | Cohen Ronald H | Provision of Content Correlated with Events |
US10445153B2 (en) * | 2017-06-30 | 2019-10-15 | Ingram Micro, Inc. | Technologies for managing web notifications in client-server systems |
-
2017
- 2017-08-04 ES ES17755350T patent/ES2894900T3/es active Active
- 2017-08-04 US US16/635,527 patent/US11323502B2/en active Active
- 2017-08-04 WO PCT/US2017/045621 patent/WO2019027480A1/en unknown
- 2017-08-04 CN CN201780093632.9A patent/CN110999257B/zh active Active
- 2017-08-04 EP EP17755350.0A patent/EP3662638B1/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6965917B1 (en) * | 1999-09-07 | 2005-11-15 | Comverse Ltd. | System and method for notification of an event |
WO2008103196A1 (en) * | 2007-02-22 | 2008-08-28 | St John Sean | Hanging request system and method for client/server communication |
CN101610183A (zh) * | 2009-07-21 | 2009-12-23 | 杭州华三通信技术有限公司 | 一种探测超文本传输协议服务器处理能力的方法及设备 |
US8117322B1 (en) * | 2009-12-10 | 2012-02-14 | Google Inc. | Latency reduction on HTTP servers |
CN102939598A (zh) * | 2010-06-11 | 2013-02-20 | 惠普发展公司,有限责任合伙企业 | 基于http的客户机-服务器通信***和方法 |
US9521174B2 (en) * | 2010-10-19 | 2016-12-13 | Paul Matthew Davidge | Video script interpreter platform with cooperating client and server |
US20170026496A1 (en) * | 2010-10-29 | 2017-01-26 | Israel L'Heureux | Enhanced computer networking via multi-connection object retrieval |
CN106878267A (zh) * | 2010-11-08 | 2017-06-20 | 谷歌公司 | 建立全双工双向通信的方法和*** |
CN102573111A (zh) * | 2012-01-10 | 2012-07-11 | 中兴通讯股份有限公司 | 传输控制协议资源的释放方法及装置 |
US20130212227A1 (en) * | 2012-02-09 | 2013-08-15 | Cogent Real-Time Systems Inc. | System and method for streaming data via http |
CN102624570A (zh) * | 2012-04-27 | 2012-08-01 | 杭州东信北邮信息技术有限公司 | 实现对web服务器可用性进行检测的监控***和方法 |
US20150200997A1 (en) * | 2013-04-23 | 2015-07-16 | Gurulogic Microsystems Oy | Communication system utilizing http |
CN103312807A (zh) * | 2013-06-20 | 2013-09-18 | 华为技术有限公司 | 数据传输方法、装置及*** |
CN106464728A (zh) * | 2014-11-25 | 2017-02-22 | 华为技术有限公司 | 处理通知信道断连的方法 |
CN104539510A (zh) * | 2014-12-02 | 2015-04-22 | 百纳(武汉)信息技术有限公司 | 一种基于多协议的信息推送***及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112788144A (zh) * | 2021-01-19 | 2021-05-11 | 深圳市位元领航科技有限公司 | 一种通信方式的实现方法、服务器以及客户端 |
Also Published As
Publication number | Publication date |
---|---|
US11323502B2 (en) | 2022-05-03 |
EP3662638A1 (en) | 2020-06-10 |
WO2019027480A1 (en) | 2019-02-07 |
US20200267201A1 (en) | 2020-08-20 |
EP3662638B1 (en) | 2021-09-22 |
CN110999257B (zh) | 2022-05-10 |
ES2894900T3 (es) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110999257B (zh) | 用于服务器通知的递送的传送方法选择 | |
US9832681B2 (en) | Higher layer compression with lower layer signaling | |
EP3755024B1 (en) | Message processing method, system, and user plane function device | |
JP7317139B2 (ja) | ワイヤレス通信システムにおける制御プレーン上でのセルラー版モノのインターネット(ciot)データ転送のための方法および装置 | |
US11457331B2 (en) | Positioning method and related device | |
TW201944759A (zh) | 用於無線通訊中的會話釋放的方法、電子裝置及存儲器 | |
US10051607B2 (en) | Data processing method, apparatus and system | |
US20200236604A1 (en) | Transmission Control Method, Apparatus, and System | |
US11310658B2 (en) | Method and apparatus for determining status of terminal device, and device | |
US20220272577A1 (en) | Communication method and communication apparatus | |
WO2018049959A1 (en) | Method and apparatus for paging an application on a user equipment | |
WO2017161866A1 (zh) | 网络连接方法及装置 | |
WO2016154831A1 (zh) | 一种实现传输控制协议tcp传输的方法及装置 | |
WO2020090773A1 (ja) | 端末装置、基地局装置、および方法 | |
US9198090B2 (en) | Node and method for AoIP address change | |
AU2020374695B2 (en) | Error handling for RRC segmentation | |
WO2024138618A1 (en) | Method and apparatus for internet key exchange (ike) session management | |
WO2021047481A1 (zh) | 一种鉴权的方法及装置 | |
WO2020095838A1 (ja) | 端末装置、基地局装置、および、方法 | |
EP4342157A1 (en) | Exchanging status messages during a call |
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 |