CN115244957A - 用于建立高度安全和弹性的持久通信连接的系统和方法 - Google Patents
用于建立高度安全和弹性的持久通信连接的系统和方法 Download PDFInfo
- Publication number
- CN115244957A CN115244957A CN202180019749.9A CN202180019749A CN115244957A CN 115244957 A CN115244957 A CN 115244957A CN 202180019749 A CN202180019749 A CN 202180019749A CN 115244957 A CN115244957 A CN 115244957A
- Authority
- CN
- China
- Prior art keywords
- instance
- request message
- service
- resource
- 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.)
- Pending
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
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1083—In-session procedures
- H04L65/1089—In-session procedures by adding media; by removing media
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1083—In-session procedures
- H04L65/1094—Inter-user-equipment sessions transfer or sharing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/403—Arrangements for multi-party communication, e.g. for conferences
-
- 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/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
-
- 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/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/06—Authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W48/00—Access restriction; Network selection; Access point selection
- H04W48/16—Discovering, processing access restriction or access information
Abstract
公开了用于为通信提供弹性持久连接的系统和方法。方法包括:在第一设备处识别向客户端连接服务注册的第二设备;从所述客户端连接服务获得用于经由所述客户端连接服务向所述第二设备递送请求消息的第一资源标识符;基于所获得的第一资源标识符来识别针对指向所述第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在所述客户端连接服务中所包括的第一主机;经由数据通信网络向所述客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由所述客户端连接服务递送到所述第二设备;以及经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第一响应消息作为对所述第一请求消息的响应。
Description
背景技术
常常需要在彼此接近的客户端设备之间进行数据通信。近场通信技术已经成为针对这样的通信的常见解决方案。示例包括蓝牙、低功耗蓝牙(BLE)和Wi-Fi技术。然而,这些技术通常不安全并且没有弹性(例如,其不为存在连接稳定性问题的场景提供高可用性)。期望用于通信的新的并且经改进的方法。
发明内容
根据本公开内容的第一方面,一种适于经由客户端连接服务进行通信的第一设备包括处理器以及在其中存储指令的机器可读介质,所述指令当由所述处理器运行时使得所述第一设备用于:识别向所述客户端连接服务注册的第二设备,其中,所述第二设备不同于所述第一设备。所述指令也可以使得所述第一设备用于:经由数据通信网络从所述客户端连接服务获得用于经由所述客户端连接服务向所述第二设备递送请求消息的第一资源标识符。此外,所述指令可以使得所述第一设备用于:基于所获得的第一资源标识符来识别针对指向所述第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在所述客户端连接服务中所包括的第一主机。所述指令也使得所述第一设备用于:经由所述数据通信网络向所述客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由所述客户端连接服务递送到所述第二设备。同样地,所述指令使得所述一个或多个处理器经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第一响应消息作为对所述第一请求消息的响应。
根据本公开内容的第二方面,一种经由客户端连接服务在设备之间进行通信的方法,包括:在第一设备处识别向客户端连接服务注册的第二设备,其中,所述第二设备不同于所述第一设备。所述方法也可以包括:在所述第一设备处经由数据通信网络从所述客户端连接服务获得用于经由所述客户端连接服务向所述第二设备递送请求消息的第一资源标识符。所述方法还可以包括:在所述第一设备处,基于所获得的第一资源标识符来识别针对指向所述第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在所述客户端连接服务中所包括的第一主机。另外,所述方法包括:由所述第一设备经由所述数据通信网络向所述客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由所述客户端连接服务递送到所述第二设备。同样地,所述方法包括:在所述第一设备处经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第一响应消息作为对所述第一请求消息的响应。
根据本公开内容的第三方面,一种经由客户端连接服务在设备之间进行通信的方法,包括:由客户端连接服务将第一资源分配给第一设备。所述方法也可以包括:在所述客户端连接服务处接收由第二设备向第一目标资源发送的第一请求消息,其中,所述第二设备不同于所述第一设备。所述方法还可以包括:基于与所述第一资源相对应的所述第一目标资源来选择所述第一设备。另外,所述方法包括:由所述客户端连接服务基于所接收到的第一请求消息来生成第一转发请求消息。同样地,所述方法包括:经由第一传输信道将所述第一转发请求消息从所述客户端连接服务传输到所述第一设备。所述方法还可以包括:在所述客户端连接服务处经由所述第一传输信道从所述第一设备接收对所述第一转发请求消息的第一响应消息。所述方法也包括:从所述客户端连接服务向所述第二设备发送基于所述第一响应消息而生成的第二响应消息作为对所述第一请求消息的响应。
提供本发明内容是为了以简化形式介绍概念的选择,这些概念将在下文的详细描述中进一步描述。本发明内容并非旨在识别所要求保护的主题的关键特征或基本特征,也并不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题并不限于解决在本公开的任何部分中指出的任何或所有有缺点的实现方式。
附图说明
附图仅通过示例而非限制的方式描绘了根据本教导的一种或多种实现方式。在图中,相似的附图标记指代相同或相似的元件。此外,应当理解,附图不一定按比例绘制。
图1A和图1B图示了用于在两个用户计算设备之间建立连接以在所述两个用户计算设备之间交换消息的客户端连接服务的示例;
图2图示了用于建立用于通信的安全并且弹性的持久网络连接的系统的示例;
图3图示了在图1A、图1B和图2中所示的第一实例和第二实例分别绑定到客户端连接服务并且向客户端连接服务注册的示例;
图4图示了经由所述客户端连接服务执行并且由所述第二实例发起的在所述第一实例与所述第二实例之间的配对过程的示例;
图5图示了被用于在图4中配对的所述第一实例与所述第二实例之间转发请求和对应响应的客户端连接服务的示例;
图6图示了客户端连接服务将所述第一实例从第一资源重新分配给不同的第二资源并且所述第一实例将对新的第二资源的改变传送给所述第二实例的示例;
图7图示了其中第一实例不能够以与在图6中所示相同的方式将经更新的资源标识符传送给所述第二实例,以及由所述第二实例从用于与所述第一实例通信的过时资源标识符的初始滥用中恢复的示例;
图8A和图8B图示了第二用户发起从第四设备到第三设备的电子内容项的投射会话的示例;
图8C图示了用于在用户设备与目标设备之间建立安全并且弹性的持久网络连接的系统的示例;
图9图示了经由在图8中所示的客户端连接服务执行的两个实例之间的配对过程的示例;
图10图示了用于周期性更新与配对设备进行通信所需的秘密的示例;
图11是图示了经由客户端连接服务在实例之间进行通信的示例性过程的实现方式的流程图;
图12是图示了经由客户端连接服务在实例之间进行通信的示例性过程的实现方式的流程图;
图13是图示了示例性软件架构的框图,其各个部分可以与在本文中所描述的各种硬件架构结合使用,所述硬件架构可以实现在本文中所描述的特征中的任意特征;以及
图14是图示了被配置为从机器可读介质读取指令并且执行在本文中所描述的特征中的任意特征的示例性机器的组件的框图。
具体实施方式
在以下详细描述中,通过示例的方式阐述了许多具体细节,以便提供对相关教导的透彻理解。然而,应当明显的是,可以在没有这样的细节的情况下实践本教导。在其他情况下,公知的方法、过程、组件和/或电路已经在相对较高的水平在没有细节的情况下进行了描述,以避免不必要地模糊本教导的各方面。在以下材料中,方向的指示(诸如“顶部”或“左侧”)仅仅用于在以下讨论期间提供参考框架,而并不旨在指示所描述的物品的所需、期望或者预期的方向。
图1A和图1B图示了客户端连接服务106(被标记为“连接服务”)被用于在两个用户计算设备130与132之间建立连接以用于在两个用户计算设备130和132之间交换消息的示例。术语“用户计算设备”涉及面向最终用户的计算设备,通常假设单个用户在给定时间使用所述设备。例如,由用户计算设备运行的软件程序可能需要提供密码或者其他凭证以便访问与用户账户相关联的资源。在一些示例中,用户计算设备可以支持多个这样的用户账户,从而允许不同的用户在各自的时间“登录”到设备。在一些示例中,用户计算设备可以支持单个用户账户;例如,大多数智能手机设备都假定结合单个个体使用。“用户计算设备”可以更简单地被称为“设备”。
在图1中所示的特定示例中,第一设备130是笔记本或膝上型计算设备形式的便携式计算设备,并且第二设备132是包括触摸屏、相机、麦克风和扬声器的桌面计算设备。然而,应当理解,第一设备130和/或第二设备132可以以其他形式来实现。在一些示例中,用户计算设备提供另一用户计算设备不提供的能力。例如,在图1中,第一设备130包括物理键盘,而第二设备132不包括物理键盘。作为另一示例,第二设备130包括触摸屏,而第一设备132不包括触摸屏。
第一软件程序实例131(在一些示例中,其可以被称为“软件实例”、“应用”或者“app”)正在由第一设备130运行。此外,第一实例131被配置为结合与第一用户120相关联的第一用户标识符经由一个或多个网络与客户端连接服务106进行交互。所述交互可以包括例如在第一实例131与客户端连接服务106之间发送和接收的命令和/或数据以实现在本文中所描述的技术的各方面。这些交互可以例如经由持久连接、异步通信和/或轮询来实现,以用于在由第一设备130运行的第一实例131与客户端连接服务106之间传输消息102(被标记为“MSG”)。应当理解,对与客户端连接服务106进行交互或者被配置为与客户端连接服务106进行交互的用户计算设备的引用是经由由用户计算设备运行的对应配置的软件程序实例而发生的。另外,第二设备132正在运行第二软件程序实例133。与针对第一实例131所描述的非常相似,第二实例133被配置为结合针对第一用户120的用户标识符经由一个或多个网络与客户端连接服务106进行交互。因此,在图1A中所示的示例中,第一设备130和第二设备132都被配置为与客户端连接服务106进行交互,并且结合第一用户120与客户端连接服务106进行交互。
在一些实现方式中,用户可以执行配对过程以将用户计算设备和/或实例识别为有资格彼此配对。在图1A中所示的示例中,在第一设备130上运行的第一实例131和在第二设备132上运行的第二实例133已经被识别为有资格配对在一起。已经经由配对过程配对的用户计算设备和/或实例的集合可以被称为“主动配对”,并且在设备和/或实例的所述集合能够经由客户端连接服务106主动通信的时间段期间一起被包含在主动配对集合中。在一些示例中,用户计算设备和/或实例的集合可以基于其与彼此和/或共同用户的接近度而转换为主动配对或者从主动配对转换。
包括设备130和132以及客户端连接服务106的系统被配置为基于所涉及的实例在相关联的时间段期间是否主动配对来控制由用于各种活动的实例的用户界面的呈现。在一些示例中,可以响应于系统将实例识别为在未主动配对与主动配对之间已经转换而修改由所述实例经由用户计算设备呈现的用户界面(包括但不限于:添加显示的用户界面(UI)元素、移除显示的UI元素和/或改变所显示的UI元素的外观)。所述系统还被配置为基于所述实例在相关联的时间段期间是否主动配对来控制实例的行为。
在图1A和图1B中所示的特定示例中,第一用户120正在电话会议会话中与多个其他用户进行交互。所述电话会议会话涉及对视频媒体流和音频媒体流的捕获和传输以用于分发给其他参与者,以及对其他参与者的视频媒体流和音频媒体流的接收和呈现。电话会议会话可以通过电话会议会话提供额外的能力,诸如但不限于向其他参与者和/或从其他参与者投射显示和/或应用内容。
图1A和图1B图示了系统的第一示例,所述系统为跨主动配对集合中所包括的多个实例的用户活动执行统一的UI交互,其中,使用由第一实例131呈现的UI控件导致在第二设备132上运行的实例作为电话会议会话的端点而加入。第一实例131被配置为与电话会议服务进行交互,诸如访问会话记录并且参与电话会议会话。例如,第一实例131可以结合用于Microsoft WindowsTM10操作系统的Microsoft TeamsTM软件的各种特征。第二实例133被配置为与所述电话会议服务进行交互。在该示例中,第二实例133被配置为为第二设备132提供“主屏幕”界面。
在图1A中,第一UI 112由第一实例133在第一显示器134(被包含在第一设备130中)上呈现,并且正在为第一用户120显示所安排的电话会议会话的议程。第一UI 112包括所安排的电话会议会话UI元素114。UI元素114包括第一会话加入UI控件116(被标记为“加入”),其可以被用于将第一用户120作为参与者加入正在进行的电话会议会话中,其中,四个其他参与者已经加入。另外,由第二实例133在第二显示器136(被包含在第二设备132中)上呈现第二UI 126以提供“主屏幕”界面。在该特定示例中,第二UI 322包括第二会话加入UI控件128(被标记为“加入”),其也可以被用于将第一用户120作为参与者加入电话会议会话。
图1B图示了第一用户120已经通过使用在图1A中所示的指针118对第一会话加入UI控件116进行致动的结果。所述系统被配置为至少基于第一设备130是否被包含在主动配对集合中来处理对第一会话加入UI控件116的致动。响应于第一设备130被包含在主动配对集合中,所述系统例如经由第二实例133使得在第二设备132上运行的第四实例137作为针对第一用户120的视听端点来操作以参与所述电话会议会话。在一些示例中,第四实例137被配置为利用第二实例133经由客户端连接服务106来传输消息。
第四实例137也被配置为:接收和呈现用于电话会议会话的传入实时媒体,在第二显示器136上呈现在第三UI 140的相应区域中的传入实时媒体中所包含的实时视频,以及经由被包含在第二设备132中的扬声器来呈现被包含在传入实时媒体中的实时音频。因此,尽管在第一设备130上呈现的第一会话加入UI控件116被用于发起将第一用户120加入到电话会议会话,但是远程参与者的视觉和音频呈现以及第一用户120的视频和音频捕获由第二设备132基于主动配对的第一实例131和第二实例133来执行。另外,第三UI 140包括第一会话UI控件142,第一会话UI控件142包括例如切换第一用户120的视频传输、切换第一用户120的音频传输、调整向第一用户120呈现的音频的音量、和/或结束第一用户120在电话会议会话中的参与的控件。因此,第二设备132可以作为电话会议会话的焦点中心来操作,同时让第一设备130空闲用于其他活动,包括与电话会议会话无关的活动。
作为示例,响应于对第一会话加入UI控件116的致动并且确定第一实例131和第二实例133被主动配对,第一实例131可以经由客户端连接服务106向第二实例133传输第一消息102,其中,第一消息102反映对第一会话加入UI控件116的致动。然后,响应于确定第一实例131和第二实例133被主动配对并且接收第一消息102,第二实例133使得第二设备132使用第四实例137作为视听端点来操作。类似地,对被包含在第一会话UI控件142中的控件的致动可以导致第四实例137(例如,经由第二实例133)经由客户端连接服务106向第一实例131发送消息105。应当理解,可以应用涉及在第一设备130与第二设备132之间交换消息以及由第一设备130和第二设备132确定的其他方案以实现相同的效果。
注意,第一设备130和第二设备132各自被配置为在未配对时作为视听端点来操作。因此,基于第一实例131确定第一实例131未主动配对,对第一会话加入UI控件116的致动将反而导致第一设备130作为电话会议会话的视听端点来操作,如针对在图1B中的第二设备132所示的。类似地,基于第二实例133确定第二实例133未被主动配对,对第二会话加入UI控件128的致动将导致第二设备132作为电话会议会话的视听端点来操作。
另外,在图1B中,在将第二设备132保持为电话会议会话的主要视听端点的同时,经由第一设备130呈现由远程参与者发起的电话会议会话的投射部分。所述投射部分可以包括例如“屏幕投射”远程参与者的显示器的一部分,但是可以使用其他投射技术。可以使用涉及在第一实例131和第二实例133和/或第四实例137之间交换的消息103和105以及由第一实例131和第二实例133和/或第四实例137确定的各种方案。例如,使用经由客户端连接服务106发送的消息103和105,第四实例137可以最初被通知投射部分并且与第一实例131协商在第一设备130上呈现所述投射部分。
在该示例中,第三实例135被配置为接收和响应(例如,通过在第一显示器134上为投射部分呈现视觉投射内容154)。第五软件程序实例310(但是可以使用不同的软件程序)被配置为呈现包括内容显示区域152的第四UI 150,在内容显示区域152中,呈现被包含在投射数据中的视觉投射内容154。
另外,在一些实现方式中,第三实例135被配置为也在第一显示器134上呈现第二会话UI控件160,与针对第一会话UI控件142所描述的非常相似。第二会话UI控件160可以包括例如切换第一用户120的视频传输的控件171、切换第一用户120的音频传输的控件172、和/或用于结束第一用户120参与电话会议会话的控件。响应于对控件171、172和173中的任意控件的致动,反映控件致动的对应消息103由第一设备130经由客户端连接服务106发送到第二设备132,从而导致由第四实例137执行对应动作。因此,利用经由客户端连接服务106的通信,用户120能够容易地经由除了第二设备132之外的第一设备130提交控制电话会议会话的命令。这为第一用户120实现了经改进的、更动态并且更灵活的用户体验。
图2图示了用于建立用于通信的安全并且弹性的持久网络连接的系统200的示例。在图2中所示的示例中,系统200可以将第一设备202和第二设备132两者与第一用户120相关联。例如,第一用户120可能已经在第一设备130和/或第二设备132上执行了登录过程,诸如利用认证服务223(其在一些实现方式中可以被包含在服务200中)。认证服务223可以被称为“身份提供者”或者“身份服务”。在一些示例中,如在图2中所示的,系统200支持多个用户和关联设备,包括额外用户226和关联额外设备228,包括支持在第一设备130、第二设备132和/或各种额外设备228之间的连接和通信。第一设备130,第二设备132、额外设备228、认证服务223和客户端连接服务106各自被配置为经由一个或多个数据通信网络224与系统200的其他部分进行通信,包括在图1A和图1B中的(一个或多个)网络108。
认证服务223被配置为识别和认证与用户计算设备相关联的用户账户。例如,认证服务223可以被配置为接收和处理用户名和密码散列形式的凭证。在一些实现方式中,认证服务223支持使用从外部认证服务获得的凭证(例如,由单点登录(SSO)服务发布的令牌),并且可以将由这样的服务提供的用户标识符与其各自的用户账户相关联。在一些实现方式中,认证服务223被配置为向已经被成功认证的设备发出访问令牌,并且服务200被配置为在与所述设备的随后通信中接收和处理所述访问令牌以用于认证和/或授权操作。在一些实现方式中,认证服务223被配置为接收和响应于请求以验证访问令牌保持有效或未过期。在一些实现方式中,认证服务223被配置为接收和处理请求以“刷新”或者“延长”访问令牌,由此延长访问令牌的到期时间。
第一设备130包括第一运行环境202,其中,第一软件程序实例131由第一设备130运行。其他软件程序实例可以由在第一运行环境202和/或由第一设备130提供的其他运行环境内的第一设备130来运行。类似地,第二设备132包括第二运行环境212,其中,第二软件程序实例133由第二设备132来运行。如将结合下文的附图更详细描述的,针对第一实例131的每个对等实例,第一实例131维护相应的第一对等资源标识符204(被标记为“对等RSCID”)和相应的第一对等持久标识符206(被标记为“对等持久ID”)。类似地,针对第二实例133的每个对等实例,第二实例133维护相应的第二对等资源标识符214和相应的第二对等持久标识符216。
客户端连接服务106包括传输服务240和注册服务260。传输服务240被配置为提供网络可访问资源,其用于在软件程序实例之间(诸如在两个对等实例之间)交换消息。为了经由传输服务240接收转发的消息,实例将自身绑定到传输服务240。传输服务240被配置为维护针对绑定实例的实例记录242,针对每个绑定实例具有相应的实例记录244。图2图示了针对第一实例131的第一实例记录244a和针对第二实例133的第二实例记录244b。如将结合下文的附图更详细描述的,第一实例记录244a可以包括针对与第一实例131相关联的用户的第一用户标识符246a(被标记为“用户ID”)、包括由传输服务240用于建立和/或维持用于与绑定示例交换消息的网络连接的信息的第一传输信道信息248a(被标记为“传输INFO”)、识别被分配给绑定实例的资源的第一资源标识符250a(被标记为“RSC ID”)、指示针对资源标识符的生命周期的第一资源有效期252a(被标记为“RSC有效期”)和/或标识传输服务240将转发到绑定实例的目标的第一允许对等目标254a。类似地,第二实例记录244b包括第二用户标识符246b、第二传输信道信息248b、第二资源标识符250b、第二第一资源有效期252b和/或第二允许对等目标254b。出于讨论的目的,第一和第二用户标识符246a和246b是相同的。
客户端连接服务106还可以包括注册表服务260,注册表服务260被配置为维护被绑定到传输服务240的实例的注册表。注册表服务260被配置为根据从被绑定到客户端连接服务106的实例接收的更新请求来更新所述注册表。另外,注册表服务260被配置为执行从实例接收的查询;例如,实例可以发出查询以识别与特定用户标识符相关联的实例。在图2中所示的示例中,注册表信息被维护为用户记录262,但是可以理解,注册表信息可以以其他方式来布置。在该示例中,用户记录262包括与第三用户标识符266a(在该示例中,其与第一和第二用户标识符246a和246b相同)相关联的第一用户记录264a。另外,第一用户记录264a包括针对与第三用户标识符266a相关联的绑定实例的实例记录268。在该示例中,实例记录268包括针对第一实例131的第五实例记录270a和针对第二实例133的第六实例记录270b。第五实例记录270a可以包括与第一实例131相关联的第一持久标识符272a,并且可以包括与第一实例131相关联的第一资源标识符274a。第六实例记录270b可以包括与第二实例133相关联的第二持久标识符272b,并且可以包括与第一实例133相关联的第二资源标识符274b。实例记录268中的每个实例记录具有不同的持久标识符272,从而允许识别实例,尽管对其相应的资源标识符274的改变可能随时间而发生。
图3图示了其中第一实例131和第二实例133每个都被绑定到客户端连接服务106并且向客户端连接服务106注册的示例。在一些示例中,发生操作302,其中,第一用户120经由第一示例131或第二设备130登录到认证服务223。在一些示例中,操作302包括接收由认证服务223所发布的令牌。在操作304处,第一实例131向传输服务240传输绑定请求消息306。“请求消息”可以更简单地被称为“请求”。在一些示例中,操作302包括确定针对第一实例131的连接信息,并且绑定请求306包括所述连接信息。在一些示例中,第一实例131可以被配置为响应于HTML请求而作为web服务器或另一服务器类型来操作,其中所述连接信息包括网络地址、端口号和/或秘密值(诸如但不限于在请求消息中所包含的标头或cookie值)以用于与服务器进行通信。在一些示例中,第一实例131被配置为确定其在防火墙后面操作或者不能够作为服务器操作以用于接收来自客户端连接服务106的请求,并且响应于该确定而使用轮询机制(诸如但不限于,长轮询)以接收来自客户端连接服务106的请求,其中所述连接信息反映了第一实例131对基于轮询的连接方案的使用。在一些示例中,绑定请求306包括用户信息,诸如用户标识符和/或认证服务223发布的令牌。
在操作308处,传输服务240接收并且处理绑定请求306。在一些实现方式中,操作308包括验证第一实例131当前利用认证服务223进行认证。例如,可以基于由第一实例131提供的访问令牌(例如,基于由密码签名的访问令牌指示的到期时间)和/或通过请求由认证服务223的验证来执行该验证。如果不存在与第一实例131相关联的实例记录244a,则传输服务240创建实例记录244a。在一些实现方式中,传输服务240被配置为响应于由实例执行的解除绑定操作而从实例记录242中移除实例记录。在一些示例中,支持由多个不同用户使用的设备提供“退出”机制,响应于此,设备上的实例将自身与传输服务240解除绑定。设置第一传输信道信息248a;例如,根据在绑定请求306中所包括的连接信息。如果有多种不同的连接方案可用(例如,网络钩子与轮询),则第一传输信道信息248a可以包括连接类型。针对基于网络钩子的方案,第一传输信道信息248a可以包括URI或者相关联信息。在其中绑定请求306包括连接信息的示例中,可以基于绑定请求306中所包括的连接信息来确定第一传输信道信息248a。
在操作308中执行的所述处理可以包括操作310,其中,传输服务240获得与发出绑定请求306的第一实例131相关联的用户标识符(诸如但不限于用户名或数字或字母数字值)。例如,可以基于被包含在绑定请求306中的用户信息来获得用户标识符。在一些实现方式中,传输服务240被配置为与认证服务223进行交互以获得与绑定请求306中所包括的令牌相关联的用户标识符。所获得的用户标识符可以作为第一用户标识符246a被包含在第一实例记录244a中。
响应于接收到绑定请求306,在操作312处,传输服务240将由被包含在传输服务240中的主机提供的资源分配给第一实例131。在一些实现方式中,所分配的资源具有基础URI形式的对应资源标识符(例如,“https://246-transport-a.trouter.io:443/v2/f/6KMkABF”),其包括方案(例如,HTTP或HTTPS)、权限(例如,主机名或网络地址和/或端口号)和/或基本路径。在一些实现方式中,客户端连接服务106跨多个数据中心来实现,并且被包含在基础URI中的权限与多个数据中心中的特定一个数据中心相对应。在一些实现方式中,所分配的资源具有值形式的对应资源标识符(例如,字符串“6KMkABF”),其将被包含在请求中(例如,作为请求所针对的URI的一部分、请求的标头部分和/或请求的正文或有效载荷部分)。在图3中,针对在操作312中所分配的所述资源的资源标识符被标记为“RSC ID 1”。被分配给第一实例131的针对所述资源的资源标识符被包含在第一实例记录244a中作为第一资源标识符250a。传输服务240被配置为:响应于接收到与第一资源标识符250a相对应的请求,根据第一传输信道信息248a将所接收到的请求转发给第一实例131,如将结合后续附图更详细描述的。另外,在操作314处,传输服务240将绑定响应消息316传输到第一实例131作为对绑定请求306的响应。“响应消息”可以被简称为“响应”。
在一些实现方式中,传输服务240被配置为经由绑定请求306或者在图3中未示出的额外请求从第一实例131接收许可对等目标。传输服务240被配置为相应地更新第一许可对等目标254a,并且被配置为基于目标是否与第一许可对等目标254a相对应来确定是否转发针对与第一资源标识符250a相对应的目标的请求。例如,如果第一许可对等目标254a包括一个或多个列入白名单的目标路径(其可以使用正则表达式来表达),则目标必须匹配要被转发的目标路径之一。通过使用第一许可对等目标254a,传输服务240能够过滤请求以防止滥用或无效请求被发送到第一实例131。
尽管图3示出了单个请求306和单个响应316,但是应当理解,可以应用其他通信方案以达到类似效果。例如,可以交换额外消息以协商在第一实例131与传输服务240之间的连接方案。类似的考虑适用于在本文中所描述的其他请求/响应交换。
在操作318处,第一实例131从传输服务240接收绑定响应316。在操作320处,第一实例131将注册实例请求322传输到注册表服务260。注册实例请求322可以指示与第一实例131相关联的用户标识符、持久标识符和/或资源标识符(例如,被包含在绑定响应316中的资源标识符)。在操作324处,注册表服务260接收注册实例请求322,并且作为响应,相应地创建和/或更新第一用户记录264a和第五实例记录270a。例如,被包含在注册实例请求322中的用户标识符可以被用于识别第一用户记录264a(如果已经存在)和/或被存储为第三用户标识符266a,被包含在注册实例请求322中的持久标识符322可以被用于识别第五实例记录270a(如果已经存在)和/或被存储为第一持久标识符272a,并且被包含在注册实例请求322中的资源标识符被存储为第三资源标识符274a。通过查询注册表服务260,系统200的其他元件(诸如第二实例133)能够获得与第一实例131相关联的资源标识符274a,如将结合图4所讨论的。
图3示出了结合将第二实例133与客户端连接服务106进行绑定而由系统200执行的类似集合的操作330、336、338、340、342、346、348和352。在一些示例中,发生操作330,其中,第一用户120经由第二实例133或第二设备130登录到认证服务223,与针对操作302所描述的非常相似。在操作332处,第二实例133向传输服务240传输绑定请求334,并且在操作336处,传输服务240接收并且处理绑定请求334,与针对绑定请求306以及操作304和308所描述的非常相似。在操作336中执行的处理可以包括操作338,其中,传输服务240获得与第二实例133相关联的用户标识符,与针对操作310所描述的非常相似。在操作340处,传输服务240将资源分配给第二实例133,与针对操作312所描述的非常相似。在图3中,针对在操作340中被分配给第二实例133的所述资源的资源标识符被标记为“RSC ID 2”。在操作342处,传输服务240向第二实例133传输绑定响应344,并且在操作346处,第二实例133接收并且处理绑定响应344,与针对绑定响应316和操作314和318所描述的非常相似。在操作348处,第二实例133向传输服务240传输注册实例请求350,并且在操作352处,传输服务240接收并且处理注册实例请求350,与针对注册实例请求322和操作320和324所描述的非常相似。
继续图3中的示例,图4图示了在经由客户端连接服务106执行并且由第二实例133发起的第一实例131与第二实例133之间的配对过程的示例。在操作402中,为了查询注册表服务260以识别可用于与第二实例133配对的其他实例,第二实例133将第一列表端点请求404(被标记为“列表端点REQ”)传输到注册表服务260。在操作406处,注册表服务260接收并且处理第一列表端点请求404以从注册表识别适当的实例。
在一些实现方式中,操作406包括操作408,在其中识别出的端点限于当前被绑定到客户端连接服务106并且与关联于请求的第二设备212的相同用户标识符相关联的实例。例如,与第二实例133相关联的用户标识符可以基于由第二实例133提供的令牌(诸如被包含在第一列表端点请求404中的令牌)来识别,或者可以被明确地包含在第一列表端点请求404中。基于所识别出的用户标识符,注册表服务260识别第一用户记录264a。注册表服务260从被包含在第一用户记录264a中的实例记录268来识别与用户标识符268相关联的实例。在一些实现方式中,可以使用其他方案来识别响应实例记录。
在操作410处,注册表服务260将第一列表端点响应412传输到第二实例133作为对第一列表端点请求404的响应。第一列表端点响应412包括从在操作406中识别出的实例记录获得的信息。例如,第一列表端点响应412针对每个识别出的实例记录可以包括持久标识符和资源标识符。在图4中所示的示例中,第一列表端点响应412包括针对第一实例131的第一持久标识符272a和第三资源标识符274a,并且同样也可以包括针对其他实例的信息。在操作414处,第二实例133接收并且处理第一列表端点响应412。操作414包括操作416,其中第二实例133从在第一列表端点响应412中识别出的一个或多个实例中选择对等端点。在一些实现方式中,第二实例133向第一用户120呈现实例列表,并且接收选择期望的实例以用于与第二实例133进行配对的用户输入。在该特定示例中,第一实例131已经被选择用于配对。
在操作420处,第二实例420被配置为基于被包含在用于第一实例131的第一列表端点响应412中的资源标识符274a来识别第一目标资源(在图4中被标记为“目标1”)。包括用于转发到第一实例131的第一建立连接请求424(被标记为“建立连接REQ”)的第一对等请求422(在图4中被标记为“对等REQ”)被发送到第一目标资源。所述第一目标资源与在操作312中被分配给第一实例131的资源相对应,其将被指定为第一资源460,如在图4中所示的。在一些示例中,所述资源标识符是基础URI,并且所述第一目标资源是通过额外另外的路径组件来识别的。例如,针对建立连接请求,根据基础URI为“https://246-transport-a.trouter.io:443/v2/f/6KMkABF”的资源标识符,可以添加进一步的路径“/connect-peer”,产生“https://246-transport-a.trouter.io:443/v2/f/6KMkABF/connect-peer”作为第一目标资源。在第一对等请求422作为HTML请求被发送的示例中,建立连接请求可以被包含在HTML请求的主体或者有效载荷中。
在操作426处,传输服务240接收并且处理第一对等请求422。传输服务240确定第一对等请求422被发送到第一资源460;例如,通过确定第一对等请求422被发送到的第一目标资源与第一资源460相对应。基于该确定,传输服务240选择与第一实例131相关联的第一实例记录244a;例如,基于确定第一目标资源与被包含在第一实例记录244a中的第一资源标识符250a相对应。
在一些实现方式中,传输服务240被配置为将转发限制在与相同用户标识符相关联的实例之间,并且操作426包括操作428,其中传输服务240确定第一和第二实例131和133是否与相同的用户标识符相关联。响应于确定相关联的用户标识符相同,传输服务240继续其对第一对等请求422的处理,如在图4中所示的。响应于确定相关联的用户标识符不同,传输服务240不继续将第一建立连接请求424转发到第一实例131。
在操作430处,传输服务240基于被包含在第一实例记录244a中的第一传输信道信息248a来建立和/或使用在传输服务240与第一实例131之间的建立的第一传输信道470。第一传输通道470被用于将第一转发建立连接请求432传输到第一实例131。尽管随着时间的推移,在传输服务240与第一实例131之间可以建立和终止多个网络连接,但是这些连接都被认为是由传输服务240用于将从其他实例接收到的转发请求“推送”到第一实例131并且接收来自第一实例131的对应响应的单个第一传输信道470的一部分。在其中第一对等请求被定向到路径(例如,其中第一对等请求422是被发送到指定路径的URI的HTML请求)并且第一转发建立连接请求432被发送到URI(例如,其中第一实例131作为服务器来操作以接收作为HTML请求的第一转发建立连接请求432)的示例中,可以基于路径的一部分来识别URI。在示例中,传输服务240被配置为从针对第一对等请求422的“/v2/f/6KMkABF/connect-peer”URI获得“/connect-peer”部分(例如,基于第一资源标识符250a),并且将所获得的部分与网络钩子基础URI(例如,被包含在第一传输通道信息248a中)“https://1.2.3.4”进行组合以获得向其发送第一转发建立连接请求432的URI“https://l.2.3.4/connect-peer”。
在操作434处,第一实例131接收并且处理第一转发建立连接请求432。在一些实现方式中,操作434包括操作436,其中传输服务240确定第一和第二实例131和133是否与相同的用户标识符相关联。例如,第一转发建立连接请求432可以包括由认证服务223发出的令牌。第一转发建立连接请求432包括与第二实例133相关联的第二资源标识符,并且在操作438处,第一实例131保留第二资源标识符作为第一对等资源标识符204,以允许第一实例131稍后经由传输服务240将请求转发到第二实例133。在一些示例中,第一转发建立连接请求432包括与第二实例133相关联的持久标识符实例,并且在操作438处,第一实例131保留持久标识符作为第一对等持久标识符206以供第一实例131稍后使用。类似地,在操作454处,第二实例133保留被包含在针对第一实例131的第一列表端点响应412中的资源标识符作为第二对等资源标识符214,并且在一些示例中,在操作454处,第二实例133保留被包含在针对第一实例131的第一列表端点响应412中的持久标识符作为第二对等持久标识符216。
在操作440处,第一实例131经由第一传输信道470发送第一建立连接响应442作为对第一转发建立连接请求432的响应。第一建立连接响应442可以简单地确认第二实例133与第一实例131的成功连接。在操作444处,传输服务240接收并且处理第一建立连接响应442。响应于接收到第一建立连接响应442,在操作446处,传输服务240将第一对等响应448传输到第二实例133作为对第一对等请求422的响应。传输服务240将第一建立连接响应442转发到第二实例133作为被包含在第一对等响应448中的第二建立连接响应450。因此,第二实例133接收对第一实例131与第二实例133的配对的确认。
从图4继续,图5图示了客户端连接服务106被用于在图4中配对的第一实例131与第二实例133之间转发请求和对应响应的示例。注意,由客户端连接服务106的这样的转发并不限于请求消息;例如,没有对应响应消息的单工通知消息可以由客户端连接服务106转发到实例。在操作502处,第一对等实例请求508将从第二实例133转发到第一实例131,并且第二实例133识别向其发送包括第一对等实例请求508的第二对等请求506的第二目标资源(被标记为“目标2”),与针对图4中的操作420所描述的非常相似。在操作504处,第二对等请求506被发送到第二目标资源(其对应于与第一实例131相关联的第一资源460),与针对图4中的操作420所描述的非常相似。
在操作510处,传输服务240接收并且处理第二对等点请求506。在一些实现方式中,传输服务240确认第一实例131和第二实例133与相同的用户标识符相关联,与针对图4中的操作428所描述的非常相似。在一些示例中,操作510包括操作512,其中传输服务240基于与第一实例131相关联的第一许可对等目标254a,通过其相应的目标资源来过滤传入请求,与先前在图3中讨论的非常相似。针对操作512所描述的过滤也可以作为图4中的操作426的一部分来执行。
在操作514处,传输服务240在传输服务240与第一实例131之间建立和/或使用第一传输信道470以将第一转发对等实例请求516传输到第一实例131,与针对图4中的操作430和第一转发建立连接请求432所描述的非常相似。第一转发对等实例请求516是基于被包含在第二对等请求506中的第一对等实例请求508来生成的。在一些实现方式中,第二对等请求506是HTML请求,并且第一对等实例请求508和第一转发对等实例请求516两者都包括相应的JSON或XML格式的有效载荷部分。在一些示例中,第一对等实例请求508和第一转发对等实例请求516的有效载荷部分是相同的。
在操作518处,第一实例131接收并且处理第一转发对等实例请求516,并且在被包含在操作518中的操作520处,响应于接收到第一转发对等实例请求516,执行与第一转发对等实例请求516相关联的动作。例如,如在图4中所示的,转发对等实例请求516是建立连接请求,执行结合操作434所描述的动作。
在操作522处,第一实例131经由第一传输信道470传输第一对等实例响应524作为对第一转发对等实例请求516的响应。在一些示例中,可以在由第一实例131传输的单个对等实例响应中聚合针对多个转发对等实例请求的响应,以减少正在被交换的消息的数量;例如,在响应是简单的确认的情况下,这可能更有效。在一些示例中,取决于与第一转发对等实例请求516相关联的动作,第一对等实例响应524可以包括用于传输到第二实例133的大量数据。在操作526处,传输服务240接收并且处理第一对等实例响应524。响应于接收到第一对等实例响应524,在操作528处,传输服务240向第二实例133传输第二对等响应530作为对第二对等请求506的响应。传输服务240将第一对等实例响应524作为被包含在第二对等响应530中的第二对等实例响应532转发到第二实例133。在一些示例中,可以在由传输服务240传输的单个对等响应中聚合多个对等实例响应(例如,包括第一对等实例响应524),以减少正在被交换的消息的数量。
另外,第一实例131可以向在图4中与其配对的第二实例133发送请求并且从第二实例133接收响应。如结合操作438所讨论的,在图4中执行的配对过程中,第一实例131在操作340中接收针对由传输服务240分配给第二实例133的第二资源560的第一对等资源标识符204。在操作540处,第二对等实例请求546将从第一实例131被转发到第二实例133,并且第一实例131识别向其发送包括第二对等实例请求546的第三对等请求544的第三目标资源(被标记为“目标3”),与针对操作540所描述的非常相似。在操作542处,第三对等请求544被发送到第三目标资源(其与被分配给第二实例133的第二资源560相对应),与针对操作504所描述的非常相似。
在操作548处,传输服务240接收并且处理第三对等点请求544。在操作548中并且与针对图4中的操作428以及操作512所描述的非常相似,传输服务240可以被配置为确认第一实例131和第二实例133与相同的用户标识符相关联和/或可以被配置为基于被包含在针对第二实例133的第二实例记录244b中的第二许可对等目标254b来通过由目标资源过滤接收到的对等请求。
在操作550处,与针对图4中的操作430和操作514所描述的非常相似,传输服务240基于被包含在第二实例记录244b中的第二传输信道信息248b在传输服务240与第二实例133之间建立和/或使用已建立的第二传输信道570。第二传输信道570被用于将第二转发对等实例请求552传输到第二实例133,与针对操作514和第一转发对等实例请求516所描述的非常相似。第二转发对等实例请求552是基于被包含在第二对等请求506中的第一对等实例请求508而生成的。在一些实现方式中,第三对等请求544是HTML请求,并且第二对等实例请求546和第二转发对等实例请求552两者都包括相应的JSON或XML格式的有效载荷部分。在一些示例中,第二对等实例请求546和第二转发对等实例请求552的有效载荷部分是相同的。在操作554处,第二实例133接收并且处理第二转发对等实例请求552,并且由第二实例133、传输服务240和第一实例131来执行操作,其导致第二实例133执行与第二转发对等实例请求552相关联的动作,并且第一实例131接收所得到的响应,与针对操作522至534所描述的非常相似。
所描述的对客户端连接服务106的使用提供了许多优点。通过使实例不直接对其他系统可用,而是经由客户端连接服务106提供对实例的访问,实例的实际网络地址不被暴露,甚至对与相同用户标识符相关联的其他实例也不被暴露。这用于保护敏感信息,诸如与实例相关联的位置和/或用户身份。另外,如针对操作512所描述的,请求过滤防止了用于使得实例对服务(例如,客户端连接服务106和/或远程服务280)可用的接口经由客户端连接服务106被访问和滥用。例如,滥用可能以恶意请求和/或内容的形式发生。此外,客户端连接服务106允许将实例之间的对等连接视为比经由实例之间的直接网络连接获得的更稳健和持久的连接。例如,客户端连接服务106能够自动地响应实例的网络连接的变化,并且将具有比从实例预期的更长的正常运行时间。同样地,客户端连接服务106封装了可以跨实例群组而使用的不同连接方案。例如,尽管一些实例可以使用网络钩子来接收请求,并且一些实例可以使用长轮询,但是经由客户端连接服务106,单个通信协议可用于所有实例。另外,客户端连接服务106经由服务器接口来呈现实例,所述服务器接口支持使用面向服务的架构和/或事件驱动架构以用于与实例进行交互。这允许使用通用代码、库和/或框架来与实例和其他服务(诸如远程服务280)两者进行交互。
在一些实现方式中,传输服务240被配置为针对不能够立即接收消息的实例临时(例如,在预定时间量内)缓存对等请求和/或对等响应,诸如在断开连接的临时时段期间。例如,传输服务240可以被配置为缓存对等请求和/或对等响应长达60秒。这针对实例与传输服务240的临时断开连接提供了弹性,其对于可能比其非移动对应物更频繁地切换网络和/或经历较差或没有网络连接的时段的移动设备上的实例是有益的。
在一些实现方式中,传输服务240被配置为维持针对实例的资源分配,同时改变到不同的传输信道以用于在实例与传输服务240之间传送消息。例如,在从第一传输信道470改变到不同传输信道之后,第一实例131可以继续被分配给第一资源460。在一些示例中,所述传输信道可以响应于针对实例的网络连接的改变而改变;例如,所述实例可以在最初经由蜂窝数据网络连接但是已经由Wi-Fi网络建立网络连接的移动设备上运行。这允许移动设备上的实例在其改变位置和网络时继续保持连接,并且避免与对等实例重新协商会话。在一些示例中,对不同传输信道的改变可以包括对不同连接方案的改变;例如,尽管最初可能使用长轮询,但是在没有防火墙的情况下改变到不同的网络允许并且导致替代地使用基于网络钩子的连接方案。这允许移动设备上的实例在网络之间移动时使用最佳的可用连接方案。
继续图3,图6图示了其中客户端连接服务106将第一实例131从第一资源460重新分配给不同的第三资源670并且第一实例131将对第三资源670的改变传送给第二实例133的示例。注意,结合图2,第一实例记录244a可以包括针对当前被分配给第一实例131(并且由资源标识符250a标识)的资源的资源有效期(expiration)252a。传输服务240被配置为:响应于当前时间等于或大于资源有效期252a,执行操作602,其中将第一实例131从第一资源460重新分配给不同的第三资源670。结果,第一实例131不再与第一资源460相关联,由此使得第一资源460无法将请求转发到第一实例131。同样地,资源标识符250a被更新为与第三资源670相关联的资源标识符,并且资源有效期252a被更新以识别应当再次将第一实例131重新分配给不同资源的时间。
然后,在操作604处,传输服务240向第一实例131传输经更新的资源通知606,这向第一实例131提供其与第三资源670相关联的新资源标识符(被标记为“RSC ID 3”)。在操作608处,第一实例131接收并且处理经更新的资源通知606,包括将第二对等资源标识符214更新为被包含在经更新的资源通知606中的新资源标识符。进一步响应于接收到经更新的资源通知606,在操作610处,第一实例131向注册表服务260传输注册表实例请求612以更新注册表,从而使得注册表服务260在操作616处将第一实例131与新资源标识符相关联,与先前结合图3中的注册实例请求322和操作324所描述的非常相似。
同样响应于接收到经更新的资源通知606,第一实例131将经更新的资源标识符提供给其对等实例,包括第二实例133。在操作620处,第一设备131将第四对等请求622发送到与由传输服务240分配给第二实例133的第二资源560相对应的第四目标资源(被标记为“目标4”)。第四对等请求622包括第一对等资源更新请求624,其指示与第一实例131相关联的资源标识符已经改变为与第三资源670相关联的新资源标识符(“RSC ID3”)。
在操作626处,传输服务240接收并且处理第四对等请求622,与针对图5中的操作510和548所描述的非常相似。在操作628处,传输服务240在传输服务240与第二实例133之间建立和/或使用第二传输信道570以向第二实例133传输第一转发对等资源更新请求630,与针对图5中的操作514和550以及第一和第二转发对等实例请求516和552所描述的非常相似。第一转发对等资源更新请求630是基于被包含在第四对等请求622中的第一对等资源更新请求624而生成的,并且类似地指示与第一实例131相关联的资源标识符已经改变为与第三资源670相关联的新资源标识符(“RSC ID 3”)。
在操作632处,第二实例133接收并且处理第一转发对等资源更新请求630,其包括在操作634处将由第二实例133存储的第二对等资源标识符214更新为由第一转发对等资源更新请求630指示的新资源标识符(“RSC ID 3”),这与先前在图4中的操作454所描述的非常相似。与针对操作522至534所描述的非常相似,在操作636处,第二实例133向传输服务240发送第一对等更新资源响应638作为对第一转发对等资源更新请求630的响应,在操作640处传输服务240接收并且处理第一对等更新资源响应638,在操作642处,传输服务240向第一实例131发送第三对等响应644(其包括根据第一对等更新资源响应638而生成的第二对等更新资源响应646)作为对第四对等请求622的响应,并且在操作648处,第一实例131接收并且处理第三对等响应644。
稍后,在操作650处,第三对等实例请求654将从第二实例133被转发到第一实例131。基于在操作634中更新的第二对等资源标识符214,第二实例133识别向其发送包括第三对等实例请求654的第五目标资源(被标记为“目标5”),与针对图5中的操作502所描述的非常相似。然后,第五对等请求652被发送到第五目标资源(其对应于现在与第一实例131相关联的第三资源670),与针对图5中的操作504所描述的非常相似。因此,通过正确地使用新资源标识符来定向到第一实例131,第三对等实例请求654被接收、处理并且经由第一传输信道470转发到第一实例131作为在操作656、658和662中的第三转发对等实例请求660,与先前针对图5中的操作510、514和518所描述的非常相似。
通过周期性地改变与第一实例131相关联的资源,即使经由第一资源460试图滥用第一实例131,在一时间段之后,第一资源460将不再有效地用于将消息转发到第一实例131,由此挫败了这样的滥用。在一些实现方式中,客户端连接服务106被配置为经由所分配的资源来检测对实例的试图滥用(例如,通过检测被发送到资源的消息的过多速率或总量)并且响应于对试图滥用的积极检测而发起操作602。例如,这可以中断经由客户端连接服务106针对实例的拒绝服务攻击。在一些实现方式中,客户端连接服务106被配置为响应于从第一实例131和/或第二实例133接收到对应请求而发起操作602。例如,第一实例131可以被配置为响应于检测到尝试的滥用或高延迟条件而发出这样的请求。作为另一示例,第一实例131可以被配置为发出这样的请求以“重置”当前对等连接,并且在一些示例中,重置由客户端连接服务106为当前对等连接持有的任何未决消息。
图7图示了其中第一实例131不能够以与在图6中所示的相同的方式将经更新的资源标识符传送给第二实例133以及由第二实例133从用于与第一实例131通信的过时资源标识符的初始滥用中恢复的示例。图7从图6中的操作616之后继续。在操作702处,第一实例131尝试在被包含在第六对等请求704中的第二对等资源更新请求706中提供新资源标识符,与针对图6中的操作620所描述的非常相似。与针对图6中操作626所描述的非常相似,在操作708处,传输服务240接收并且处理第六对等请求704。与针对图6中的操作628所描述的非常相似,传输服务240尝试经由第二传输信道570向第二实例133发送第二对等资源更新请求712。然而,此时传输服务240不能够与第二实例133进行通信;例如,在其上运行第二实例133的第二设备132可能暂时失去网络连接。结果,第二实例133没有被通知将用于将消息转发到第一实例131的新资源标识符。
稍后,在操作720处,并且如在图5中所示的,由第二实例133所使用的第二对等资源标识符214继续与第一资源460相对应。因此,包括第四对等实例请求724的第七对等请求722被发送到与先前被分配给第一实例131的第一资源460相对应的第七目标(被标记为“目标7”)。然而,在操作726时,当传输服务240接收到第七对等请求722时,第一资源460不再与实例相关联。响应于第七目标资源不对应于第一资源460或者另一这样的资源,在操作728处,传输服务240将指示第七目标资源无效的错误消息730传输到第二实例133作为对第七对等请求722的响应。在一些示例中,第七对等请求722是HTML请求,并且错误响应720是具有4XX客户端错误状态码的HTML响应,诸如“404未找到”状态码。
在操作732处,第二实例133接收并且处理错误响应730。基于响应于第七对等请求722的错误消息730的接收,第二实例133确定第一实例131不再被分配给第一资源460。响应于该确定,在操作734处,第二实例133向注册表服务260发送第二列表端点请求736,其中注册表服务260接收第二列表端点请求736,并且在操作738处识别适当的实例,在操作740处,注册表服务发送第二列表端点响应742,与针对图4中的操作402至410所描述的非常相似。然后在操作744处,第二实例133从列表端点响应742获得与第一实例131的第二对等持久标识符216相关联的资源标识符。替代地,第二实例133可以发出包括第二对等持久标识符216的定位端点请求(在图7中未示出),其中注册表服务260识别与接收到的第二对等持久标识符216相关联的资源标识符,并且返回包括针对与第二对等持久标识符216相对应的第一实例131的识别出的资源标识符(“RSC ID 3”)的定位端点响应(在图7中未示出)。由于由注册表服务260存储的持久标识符272a与由第二实例133存储的第二对等持久标识符216保持相同,所以持久标识符对于获得针对第一实例131的新资源标识符(“RSC ID 3”)是有效的。
在操作746处,第二实例133利用从注册表服务260获得的新资源标识符来更新第二对等持久标识符216。在操作748处,基于第二对等持久标识符216的新值,第二实例133识别第二实例133向其发送包括第四对等实例请求724的第八对等请求750的第八目标资源(被标记为“目标8”),类似于第七对等请求722。第八目标资源与当前被分配给第一实例131的第三资源670相对应。因此,在操作752处,传输服务240接收并且处理第八对等请求750,并且在操作754处,经由第一传输信道470向第一实例131发送第四转发对等实例请求756,这在操作758处由第一实例131成功地接收和处理,与先前针对图5中的操作510至518所描述的非常相似。第一实例131可以执行相关联的动作并且发送响应,与针对图5中的操作522至534所描述的非常相似。
在一些实现方式中,客户端连接服务106被配置为周期性地确定第一实例131和/或第二实例133是否保持利用认证服务223被认证。例如,客户端连接服务106可以被配置为与认证服务223进行交互以请求对从实例接收的访问令牌的验证。响应于确定实例没有保持利用认证服务223被认证,客户端连接服务106被配置为终止当前为所述实例维护的一个或多个连接。在一些示例中,实例(诸如第一实例131和/或第二实例133)可以被配置为周期性地与认证服务223进行交互以确保其保持利用认证服务223被认证,诸如通过刷新或者扩展先前从认证服务223获得的访问令牌。通过让客户端连接服务106周期性地确定实例是否保持被认证,客户端连接服务106防止实例滥用并且必须将实例配置为执行与客户端连接服务106的显式解除绑定或解除配对动作。
客户端连接服务230可以被配置为实现在用户计算设备与目标设备之间的通信,所述目标设备不与任何特定用户相关联,而是可用于与各种用户的按需配对。例如,所述目标设备可以包括适合远距离观看的大型显示器。如结合图1A-7所讨论的,这种能力可以是对实现在用户计算设备之间的通信的补充或替代。图8A和图8B图示了第二用户820(其可以被称为“第一出席者”或“第一参与者”)发起第一电子内容项目844(其可以被称为“电子内容”或“内容”)从第四设备812(其可以被称为“参与者设备”、“用户计算设备”或“用户设备”)到第三设备802(其可以被称为“投射目标设备”、“目标设备”或“投射目标”)的投射会话。可以理解,文件或文档是电子内容项目的示例。在图8A和图8B中所示的示例处在环境800中,环境800是具有第三设备802和永久位于其中的桌子的会议室。第二用户820与第二出席者822和第三出席者824一样坐在桌边。出席者820、822和824可以在环境800中一起参加安排的或未安排的会议。在如在图8A中所示的时间处,被包含在第三设备802中的第一显示设备806(其可以被称为“显示器”)没有与会议结合使用。例如,第三设备802可以处于其中显示器806断电的降低功率的睡眠状态。显示器806提供了非常适合于从远处观看的大显示区域。
在图8A中,第二用户820希望与其他出席者822和824显示和讨论可经由第四设备812访问的第一电子内容项目844。在该示例中,第四设备812是手持便携式智能电话计算设备的形式,但是第四设备812可以以其他形式来体现,诸如但不限于平板计算机、笔记本或膝上型计算机、台式计算机和/或控制台计算设备(例如,桌子上提供的控制台)。如在图8C中所示的,第二参与者设备812包括第四应用813,其可以被配置为通过使用被包含在第四设备812中的计算资源在本机获得和呈现第一电子内容844(例如,以被存储在包含在第四设备812中的本地存储设备中或者从网络可访问存储服务取回的电子文件的形式)。然而,尽管第四设备812可以有效地用于查看和/或编辑第一电子内容844的个体使用,但是在图8A和图8B中所示的会议的上下文中,由第三设备802在显示器806上呈现第一电子内容844以供所有出席者820、822和824观看将更加有效。在图8A中,第二用户820正在与被包含在第四设备812中的显示器816上呈现的第一用户界面(UI)840进行交互。
如在图8A中所示的,在该示例中,第三设备802被配置为周期性地传输第一信标信号830(其可以被称为“信标”)以指示其作为支持配对的设备的存在。在一些实现方式中,第一信标信号830是由被包含在第三设备802中的存在收发器生成的,其中,第一信标信号830是以诸如短程无线信号的短程信号的形式生成的;例如,经由低功耗蓝牙(BLE)、声学信号(包括但不限于超声)和/或光学信号。响应于接收到第一信标信号830,第四设备812确定第三设备802作为支持配对的设备存在,并且经由第一UI 840来呈现选项以发起到第三设备802的投射。然后,经由第一UI 840,第二用户820发起第一电子内容844到第三设备802的投射。
响应于图8A中的投射的发起,在图8B中,在第一投射会话中对第一电子内容844的投射已经开始,其中第二用户820是投射会话的“呈现者”。这经由客户端连接服务106通过将第三设备802与第四设备812配对以及在两个设备802和812之间转发消息来执行。第一电子内容844(在该示例中,用于演示应用的幻灯片,诸如Microsoft PowerPointTM)由在第四设备812上执行的第四应用在显示器816上的第二UI 842中呈现。同时并且在所图示出的投射会话期间,第一电子内容844由在第三设备802上运行的第三应用呈现在显示器806上的第三UI 850中。通过在第三设备802上使用第三应用,第一电子内容844的呈现不依赖于第四设备812的呈现分辨率、质量和能力,如在通过显示器816的“屏幕投射”图形内容执行投射时通常将发生的。
在投射会话期间,由第二用户820执行的影响第一电子内容844在第四设备812上的呈现的动作被第四设备812经由客户端连接服务106识别、编码和传输到第三设备802。响应于接收到经编码的动作,第三设备802经由第三应用执行等效动作,结果影响由第三设备802对第一电子内容844的呈现,这与在第四设备812上执行的动作并行。所述经编码的动作可以包括改变正在呈现第一电子内容844的哪个子部分的导航动作(例如,下一页或者滚动动作)。所述经编码的动作可以包括改变第一电子内容844的部分的编辑动作,诸如但不限于:添加或移除文本、添加、移除、调整大小和移动图形组件,以及格式化动作(诸如但不限于字符格式化和段落格式化)。通过响应于实时接收到的动作来修改显示器806上的第一电子内容844的呈现,第三设备802提供用于协作讨论第一电子内容844的吸引人的画布。
图8C图示了用于在用户设备与目标设备之间建立安全并且弹性的持久网络连接的系统800的示例。例如,系统800可以被用于实现在第三设备802与第四设备812之间的投射,如在图8A和图8B中所示的,但是由系统800建立的设备连接的用途并不限于投射。系统800包括在图2中所示的多个特征,包括客户端连接服务106、传输服务240、注册表服务260、(一个或多个)网络224、额外用户226和设备228、认证服务223和远程服务280。在系统800中,传输服务240被配置为管理实例记录242,如结合图2-7所描述的。在该示例中,实例记录242包括与第三设备802相关联的第五实例记录244c,以及与第四设备812相关联的第六实例记录244d。第三和第六实例记录244a和244b可以包括与被包含在第一实例记录244a中的任何项目相对应的项目。
在一些实现方式中,传输服务240被配置为访问目录服务890以确定是否允许用户或者与用户相关联的实例连接到诸如第三设备802之类的设备。例如,目录服务890和/或传输服务240可以维护由传输服务240和/或第三设备802所使用的设备、组、组织和/或角色访问策略,以确定是否允许实例连接到第三设备802。在一些示例中,设备可以与由目录服务890维护的一个或多个组和/或组织相关联,并且基于用户与未包含在与设备相关联的组或组织中的实例相关联和/或用户不与一个或多个特定角色相关联,而不允许实例连接到设备。
在系统800中,注册表服务260被配置为管理用户记录262,如在图2-7中所描述的。在该示例中,用户记录262包括与第二用户820相关联的第二用户记录264b。第二用户记录264b可以包括与被包含在第一用户记录264a中的任何项目相对应的项目;例如,第二用户记录264b包括第四用户标识符266b(针对第二用户820)和第五实例记录270c(针对第四设备812)。注册表服务260还被配置为管理针对不与特定用户相关联的设备的设备记录880,诸如第三设备802和额外设备892。在该示例中,设备记录880包括与第三设备802相关联的第一设备记录882a。第一设备记录882a包括针对第三设备802的设备标识符884a和由传输服务240分配给第三设备802的第五资源标识符886a,与在图2中的第三和第四资源标识符274a和274b被描述为被分配给其各自的第一和第二设备130和132非常相似。
与第一设备130非常相似,第三设备802包括第三运行环境861,其中,第三软件程序实例803由第三设备802运行,第五实例803为第五实例803的对等实例维护第三对等资源标识符862,并且第五实例803可以为对等实例维护第三对等持久标识符866。在一些示例中,第五实例803可以维护当前秘密864,当前秘密864被用于生成被包含在由第五实例803经由被包含在第三设备802中的第一接近收发器868传输的广播消息中的数据。
与第一设备130非常相似,第四设备812包括第四运行环境871,其中,第四软件程序实例813由第四设备812执行,第六实例813为第六实例813的对等实例维护第四对等资源标识符872,并且第六实例813可以为对等实例维护第四对等持久标识符876。针对与不与特定用户相关联的实例(诸如五实例803)的连接,第六实例813可以被配置为维护对等设备标识符871(存储针对配对实例的设备标识符)和/或对等秘密874(用于与配对实例通信)。在一些示例中,第六实例813能够与在其他用户计算设备(诸如额外设备228)上运行的实例配对。第四设备812包括由第六实例813用于检测与其他设备的接近度的第二接近收发器878;例如,通过接收由第三设备802传输的广播消息。
可以理解的是,尽管图8A、图8C、图9和图10图示了其中第一接近收发器868传输由第二接近收发器878接收的信标信号(例如,图8A中的第一信标信号830)以在第三和第四设备802和812之间执行接近检测,能够采用第一和第二接近收发器868和878进行交互以执行接近检测的其他方案。通过第一示例,第二接近收发器878可以传输由第一接近收发器接收的信标信号。通过第二示例,第一和第二接近收发器868和878两者都可以接收信号,诸如由无线通信设备生成的信号,并且基于接收到的信号确定第三和第四设备802和812相互接近于无线通信设备。
图9图示了经由在图8中所示的客户端连接服务106执行的在第五实例803与第六实例813之间的配对过程的示例。出于讨论的目的,假设第三和第六实例803和813都已经被绑定到客户端连接服务106,与先前在图3中所描述的非常相似。第五实例803的绑定包括向注册表服务260注册以创建或更新与第五实例803相关联的设备记录882a,并且作为结果在注册表服务260处将针对第五实例803的设备标识符884a与当前由传输服务240分配给第五实例803的第四资源960的第五资源标识符886a(被标记为“RSC ID 4”)相关联。第六实例813的绑定可以包括操作902,其中,第二用户820经由第六实例813或第四设备812登录到认证服务223。
在操作904处,第六实例904使用第二接近收发器878来检测接近第四设备812的其他设备。与针对图8A中的第一信标信号830所描述的非常相似,在操作906处,第五实例803传输包括针对第三设备802的设备标识符的第二信标信号907。在一些实现方式中,可以使用实例标识符来替代设备标识符。在一些实现方式中,第一秘密908(被标记为“秘密1”)在第二信标信号907中被编码;例如,第一秘密908可以是密钥值。在操作910处,第六实例813经由第二接近收发器878接收第二信标信号907,并且在操作912处,第六实例813从信标信号907获得设备标识符,将其存储为对等设备标识符871。在信标信号907包括第一秘密908的实现方式中,在操作914处,第六实例813从信标信号907获得第一秘密908,将其存储为对等秘密874。
类似于使用第一列表端点请求404来获得在图4中所描述的资源标识符,在操作916处,第六实例813向注册表服务260传输设备资源请求918(被标记为“设备RSC请求”),请求与在第二信标信号907中接收到的设备标识符相关联的资源标识符。在操作920处,注册表服务260接收并且处理设备资源请求918以识别包括由设备资源请求918识别出的设备标识符的设备记录880。在该示例中,注册表服务260识别针对第五实例803的设备记录882a。在操作922处,注册表服务260向第六实例813传输设备资源响应924作为对设备资源请求918的响应。设备资源响应924包括从识别出的设备记录882a获得的信息,包括被分配给第五实例803的第五资源标识符886a。在一些实现方式中,第二信标信号907包括被分配给第五实例813的资源标识符,并且在操作926处,资源标识符替代地从信标信号907获得,并且省略操作916、920和922。在一些实现方式中,响应于确定第三设备802接近第四设备812并且在继续操作916或操作930之前,第六实例813向第二用户820呈现用户界面以允许第二用户820发起与第五实例的配对,并且第六实例813接收请求第六实例813与第五实例803配对的用户输入。
在操作930处,第六实例813被配置为基于被包含在针对第五实例803的设备资源响应924中的资源标识符872来识别第九目标资源(被标记为“目标9”)。包括用于转发到第五实例803的第二建立连接请求934的第九对等请求932被发送到第十目标资源,与针对图4中的操作420所描述的非常相似。在操作936处,传输服务240接收并且处理第九对等请求932,并且在操作938处,经由在传输服务240与第五实例803之间的第三传输信道970将第二转发建立连接请求940(基于第二建立连接请求934生成的)传输给第五实例803,与针对图4中的操作426和430所描述的非常相似。在操作942处,第五实例803接收并且处理第二转发建立连接请求940,与针对图4中的操作434和438所描述的非常相似。在一些示例中,操作942包括操作942,其中,第五实例803验证与用户标识符(其可以被包含在第二转发建立连接请求940中)相关联的第六实例813被允许连接到第五实例803。例如,如在图8C中所讨论的,第五实例803可以被配置为与目录服务890进行交互以验证用户标识符。响应于积极验证,第五实例803继续处理第二转发建立连接请求940并且与第六实例813相连接。
在第六实例813从第二信标信号907接收到第一秘密908的实现方式中,根据第一秘密908对建立连接请求934和第二转发建立连接请求940进行编码。在一些示例中,第一秘密908被简单地包括为请求934和940的一部分,诸如键/值对的一部分。在一些示例中,请求934和940的一部分基于第一秘密908被加密,诸如通过使用第一秘密908作为加密密钥。在一些示例中,请求934和940包括基于第一秘密908生成的签名,诸如将第一秘密908用作盐值的有效载荷部分的密码签名。在被包含在操作942中的操作946处,第五实例802验证第二转发建立连接请求940是根据当前秘密864(其在该示例中与第一秘密908相同)编码的。成功的验证允许第五实例803确定第六实例813与第三设备802足够接近以接收由第三设备802传输的信标信号。响应于积极验证,第五实例803继续处理第二转发建立连接请求940并且与第六实例813相连接。
与先前针对图4中的操作440、444、446和452所描述的非常相似,在第五实例803和第六实例813之间的配对过程通过以下操作来完成:在操作948处传输第三建立连接响应950,在操作952处接收并且处理第三建立连接响应950,在操作954处传输包括第四建立连接响应958的第四对等响应956,以及在操作960处在第六实例813接收并且处理第四对等响应956。
继续图9中的示例,其中,第三和第六实例803和813配对,图10图示了周期性地更新与配对设备通信所需的秘密的示例。在该示例中,第五实例803被配置为经由第一接近收发器868周期性地传输信标信号,与针对第二信标信号907所描述的非常相似。周期性传输的信标信号包括当前秘密864,其在第五实例803中被配置为定期地更新为新值。因此,由第五实例803传输的信标信号包括随时间持续变化的秘密。
在操作1004处,第六实例813传输包括第五对等实例请求1008的第十对等请求1006,与针对图5中的操作504所描述的非常相似。在该示例中,当前秘密864仍然是来自图9的第一秘密908,并且第五对等实例请求1008根据第一秘密908进行编码,与在图9中所描述的非常相似。与针对图9中的操作936、938、942和946所描述的非常相似,传输服务240在操作1012处接收并且处理第十对等请求1006,并且在操作1014处经由第三传输信道970来传输第五转发对等实例请求1016(基于第五对等实例请求1008生成的),并且在操作1020处。第五实例803接收并且处理第五转发对等实例请求1016,操作1020包括操作1022,其中,第五实例803验证第五转发对等实例请求1016是根据当前秘密864编码的。自此,对第五转发对等实例请求1016的处理继续,与在图5、6和/或7中所示的示例非常相似。
稍后,第五实例803执行对当前秘密864的周期性更新,将其从第一秘密908改变为不同的第二秘密1032(被标记为“秘密2”)。然后,在操作1030处,第五实例803传输包括第二秘密1032的第三信标信号1031。在操作1034处,第六实例813接收第三信标信号1031,并且在操作1036处,将对等秘密874更新为被包含在第三信标信号1031中的第二秘密1032。操作1038、1046、1048、1054和1056直接对应于操作1004、1012、1014、1020和1022。然而,在操作1038至1056中,第六对等实例请求1042(被包含在第十一对等请求1040中)和对应的第六转发对等实例请求1050基于被包含在第三信标信号1031中的第二秘密1032进行编码。通过更新当前秘密864,传输当前秘密864是信标信号,并且验证从配对实例接收到的消息是基于当前秘密864编码的,第五实例803能够确认第四设备812已经保持在第三设备802附近,否则其将不接收将消息编码到第五实例803所需的更新秘密。
为了进一步例示说明这一点,操作1060至1092图示了操作1034至1056的替代示例。在该示例中,尽管当前秘密864已经被更新为第二秘密1032并且包括新秘密1032的第三信标信号1031由第五实例802发送,但是第六实例812没有接收到第三信标信号1031,因此继续使用第一秘密908。操作1060、1068和1070与操作1004、1012和1014直接对应,包括基于第一秘密908编码第七对等实例请求1064(被包含在第十二对等请求1062中)和第七转发对等实例请求1072。然而,在操作1078处,第五实例803未能验证在操作1076接收到的第七转发对等实例请求1072是基于当前秘密864(其当时是第二秘密1032)编码的。响应于验证失败,第五实例803不继续处理第七转发对等实例请求1072,而是在操作1080处替代地传输错误响应1082作为对第七转发对等实例请求1072的响应。在操作1086处,传输服务240传输第五对等响应1088(包括基于在操作1084处接收的错误响应1082而生成的错误响应1090)作为对第十二对等请求1062的响应。第六实例813在操作1092处接收第五对等响应1088。因此,第六实例813未能接收和使用第二秘密1032阻止其继续与第五实例803通信。
在一些示例中,第五实例803被配置为响应于从配对的第六实例813接收到预定数量的消息(其可以是预定数量的连续消息)而自动地终止与第六实例813的配对连接,所述消息基于当前秘密864和/或在从已经从配对的第六实例813接收到成功验证的消息之后过了预定时间量之后未成功验证为已经被编码。
图11是图示了用于经由客户端连接服务在实例之间进行通信的示例性过程1100的实现方式的流程图。在一些示例中,过程1100的一些或全部过程可以与结合图1-10、13和14讨论的特征中的任意特征组合来执行,但是其也可以利用在本文中所描述的任何其他特征来执行。在图11中,第一操作1110可以包括在第一设备处识别向客户端连接服务注册的第二设备,其中,第二设备不同于第一设备。在第二操作1120中,过程1100可以包括在第一设备处经由数据通信网络从客户端连接服务获得用于经由客户端连接服务向第二设备递送请求消息的第一资源标识符。在第三操作1130中,过程1100可以包括在第一设备处基于所获得的第一资源标识符来识别针对指向第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在客户端连接服务中所包括的第一主机。在第四操作1140中,过程1100包括由第一设备经由数据通信网络向客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由客户端连接服务递送到第二设备。在第五操作1150中,过程1100包括在第一设备处经由数据通信网络从客户端连接服务接收由第二设备提供的第一响应消息作为对第一请求消息的响应。
图12是图示了用于经由客户端连接服务在实例之间进行通信的示例性过程1200的实现方式的流程图。在一些示例中,过程1200中的一些或全部过程可以与结合图1-10、13和14所讨论的特征中的任意特征组合来执行,但是其也可以利用在本文中所描述的任何其他特征来执行。在图12中,第一操作1210可以包括由客户端连接服务将第一资源分配给第一设备。在第二操作1220中,过程1200可以包括在客户端连接服务处接收由第二设备发送到第一目标资源的第一请求消息,其中,第二设备不同于第一设备。在第三操作1130中,过程1200可以包括基于与第一资源相对应的第一目标资源来选择第一设备。在第四操作1140中,过程1200包括由客户端连接服务基于接收到的第一请求消息生成第一转发请求消息。在第五操作1250中,过程1200包括经由第一传输信道将第一转发请求消息从客户端连接服务传输到第一设备。在第六操作1260中,过程1200包括在客户端连接服务处经由第一传输信道从第一设备接收对第一转发请求消息的第一响应消息。在第七操作1270中,过程1200包括从客户端连接服务向第二设备传输基于第一响应消息生成的第二响应消息作为对第一请求消息的响应。
结合图1-12所描述的系统、设备和技术的详细示例将在下文中呈现以说例示明本公开以及其益处。这样的使用示例不应当被解释为对本公开的逻辑过程实施例的限制,也不应当将用户界面方法与在本文中所描述的那些的变化视为在本公开的范围之外。在一些实施例中,图1-12所描述的各种特征在相应的模块中实现,这些模块也可以被称为和/或包括逻辑、组件、单元和/或机制。模块可以构成软件模块(例如,被体现在机器可读介质上的代码)或硬件模块。
在一些示例中,硬件模块可以机械地、电子地或者利用其任何合适的组合来实现。例如,硬件模块可以包括被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以包括专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路,并且可以包括用于这种配置的机器可读介质数据和/或指令的一部分。例如,硬件模块可以包括包含在可编程处理器内的软件,该可编程处理器被配置为执行软件指令集合。应当理解,以机械方式在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件模块的决定可能受成本、时间、支持和工程考量的驱动。
因此,短语“硬件模块”应当被理解为涵盖能够执行某些操作并且可以以某种物理方式配置或布置的有形实体,即物理构造、永久配置(例如、硬连线)和/或临时配置(例如,编程)以某种方式操作或执行在本文中所描述的某些操作的的实体。如在本文中所使用的,“硬件实现的模块”指的是硬件模块。考虑到硬件模块被临时配置(例如,被编程)的示例,每个硬件模块不需要在任何一个时间实例上被配置或实例化。例如,在硬件模块包括通过软件配置成为专用处理器的可编程处理器的情况下,可编程处理器可以在不同的时间分别被配置为不同的专用处理器(例如,包括不同的硬件模块)。软件可以相应地配置一个或多个特定处理器,例如,以在一个时间实例构成特定硬件模块并且在不同时间实例构成不同硬件模块。使用一个或多个处理器实现的硬件模块可以称为“处理器实现的”或“计算机实现的”。
硬件模块可以向其他硬件模块提供信息以及从其他硬件模块接收信息。因此,所描述的硬件模块可以被认为是通信耦合的。在同时存在多个硬件模块的情况下,可以通过在两个或多个硬件模块之间的信号传输(例如,通过适当的电路和总线)来实现通信。在多个硬件模块在不同时间被配置或实例化的实施例中,这些硬件模块之间的通信可以例如通过在多个硬件模块可以访问的存储器设备中存储和取回信息来实现。例如,一个硬件模块可以执行操作并且将输出存储在存储器设备中,然后另一硬件模块可以访问存储器设备以取回和处理存储的输出。
在一些示例中,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块来执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(SaaS)。例如,至少一些操作可以由多台计算机(作为包括处理器的机器的示例)和/或在多台计算机之间执行,这些操作可经由网络(例如,互联网)和/或经由一个或多个软件接口(例如,应用程序接口(API))进行访问。某些操作的执行可以分布在处理器之间,这些处理器不仅驻留在单个机器内,而且部署在多台机器上。处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭或办公室环境中,或服务器场内),或者可以分布在多个地理位置。
图13是示出示例性软件架构1302的框图1300,其各个部分可以结合在本文中所描述的各种硬件架构使用,其可以实现任何上述特征。图13是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进在本文中所描述的功能。软件架构1302可以在诸如图14的机器1400的硬件上执行,该机器1400包括处理器1410、存储器1430和输入/输出(I/O)组件1450等。代表性硬件层1304被示出并且可以代表例如图14的机器1400。代表性硬件层1304包括处理单元1306和相关联的可执行指令1308。可执行指令1308表示软件架构1302的可执行指令,包括在本文中所描述的方法、模块等的实现。硬件层1304还包括存储器/存储设备1310,其还包括可执行指令1308和伴随数据。硬件层1304还可以包括其他硬件模块1312。处理单元1308持有的指令1308可以是存储器/存储设备1310持有的指令1308的一部分。
示例性软件架构1302可以被概念化为层,每个层提供各种功能。例如,软件架构1302可以包括层和组件,例如操作系统(OS)1314、库1316、框架1318、应用1320和呈现层1344。在操作上,应用1320和/或层内的其他组件可以调用API调用1324到其他层并且接收对应的结果1326。所示的层本质上是代表性的,并且其他软件架构可以包括额外的或不同的层。例如,一些移动或专用操作系统可能不提供框架/中间件1318。
OS 1314可以管理硬件资源并提供公共服务。OS 1314可以包括例如内核1328、服务1330和驱动器1332。内核1328可以充当在硬件层1304和其他软件层之间的抽象层。例如,内核1328可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络、安全设置等。服务1330可以为其他软件层提供其他公共服务。驱动器1332可以负责控制底层硬件层1304或与其接口。例如,驱动器1332可以包括显示驱动器、相机驱动器序、存储器/存储设备驱动器、外围设备驱动器(例如,经由通用串行总线(USB))、网络和/或无线通信驱动器、音频驱动器等,这取决于硬件和/或软件配置。
库1316可以提供可以由应用1320和/或其他组件和/或层使用的公共基础设施。库1316通常提供供其他软件模块使用以执行任务而不是直接与OS 1314交互的功能。库1316可以包括系统库1334(例如,C标准库),其可以提供诸如存储器分配、字符串操纵、文件操作的功能。此外,库1316可以包括API库1336,例如媒体库(例如,支持图像、声音和/或视频数据格式的呈现和操纵)、图形库(例如,用于在显示器上渲染2D和3D图形的OpenGL库)、数据库(例如,SQLite或其他关系数据库函数)和web库(例如,提供web浏览功能的WebKit)。库1316还可以包括多种其他库1338,以为应用1320和其他软件模块提供许多功能。
框架1318(有时也被称为中间件)提供了可以由应用1320和/或其他软件模块使用的更高级别的公共基础设施。例如,框架1318可以提供各种图形用户界面(GUI)功能、高级资源管理或高级定位服务。框架1318可以为应用1320和/或其他软件模块提供广泛的其他API。
应用1320包括内置应用1340和/或第三方应用1342。内置应用1340的示例可以包括但不限于联系人应用、浏览器应用、定位应用、媒体应用、消息传递应用和/或游戏应用。第三方应用1342可以包括由除特定平台的供应商之外的实体开发的任何应用。应用1320可以使用经由OS 1314、库1316、框架1318和呈现层1344可用的功能来创建用户界面以与用户交互。
一些软件架构使用虚拟机,如虚拟机1348所示。虚拟机1348提供运行环境,其中应用/模块可以像在硬件机器(例如图14的机器1400)上执行一样执行。虚拟机1348可以由主机OS(例如,OS 1314)或管理程序托管,并且可以具有管理虚拟机1348的操作和与主机操作系统的互操作的虚拟机监视器1346。不同于虚拟机外部的软件架构1302的软件架构在虚拟机1348内执行,例如OS1350、库1352、框架1354、应用1356和/或呈现层1358。
图14是示出示例性机器1400的组件的框图,该机器1400被配置为从机器可读介质(例如,机器可读存储介质)读取指令并且执行在本文中所描述的任何特征。示例性机器1400是计算机系统的形式,在其中可以执行用于使机器1400执行在本文中所描述的任何特征的指令1416(例如,软件组件的形式)。因此,指令1416可用于实现本文所述的模块或组件。指令1416使未编程和/或未配置的机器1400作为被配置为执行所描述的特征的特定机器操作。机器1400可以被配置为作为独立设备操作或可以耦合(例如,联网)到其他机器。在联网部署中,机器1400可以在服务器-客户端网络环境中以服务器机器或客户端机器的容量运行,或者作为对等或分布式网络环境中的节点运行。机器1400可以体现为例如服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、游戏和/或娱乐系统、智能手机、移动设备、可穿戴设备(例如,智能手表)和物联网(IoT)设备。此外,尽管仅图示了单个机器1400,但术语“机器”包括单独或联合执行指令1416的机器的集合。
机器1400可以包括处理器1410、存储器1430和I/O组件1450,其可以经由例如总线1402通信地耦合。总线1402可以包括多条总线,经由各种总线技术和协议耦合机器1400的各种元件。在示例中,处理器1410(包括例如中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC或其合适的组合)可以包括执行指令1416并且处理数据的一个或多个处理器1412a至1412n。在一些示例中,一个或多个处理器1410可以执行由一个或多个其他处理器1410提供或标识的指令。术语“处理器”包括多核处理器,该多核处理器包括可以同时执行指令的核心。尽管图14图示了多个处理器,但机器1400可以包括具有单个核心的单个处理器、具有多个核心的单个处理器(例如,多核处理器)、每个具有单个核心的多个处理器、每个具有多个核心的多个处理器,或者其任何组合。在一些示例中,机器1400可以包括分布在多台机器之间的多个处理器。
存储器/存储设备1430可以包括主存储器1432、静态存储器1434或其他存储器以及存储单元1436,处理器1410可以例如经由总线1402对其进行访问。存储单元1436和存储器1432、1434存储体现在本文中所描述的任何一个或多个功能的指令1416。存储器/存储设备1430还可以存储用于处理器1410的临时、中间和/或长期数据。在执行期间,指令1416还可以完全或部分地驻留在存储器1432、1434内、在存储单元1436内、在处理器1410的至少一个内(例如,在命令缓存器或高速缓存存储器内)、在I/O组件1450中的至少一个的存储器内或者其任何适当的组合。因此,存储器1432、1434、存储单元1436、处理器1410中的存储器和I/O组件1450中的存储器是机器可读介质的示例。
如在本文中所使用的,“机器可读介质”是指能够临时或永久存储使机器1400以特定方式操作的指令和数据的设备,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓存存储器、闪存、光存储介质、磁存储介质和设备、高速缓存、网络可访问或云存储、其他类型的存储和/或其任何合适的组合。术语“机器可读介质”适用于单个介质或多个介质的组合,用于存储指令(例如,指令1416)以供机器1400执行,使得指令当由机器1400的一个或多个处理器1410执行时使机器1400执行在本文中所描述的一个或多个特征。因此,“机器可读介质”可以指单个存储设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。术语“机器可读介质”不包括信号本身。
I/O组件1450可以包括适用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等的多种硬件组件。在特定机器中包括的特定I/O组件1450将取决于机器的类型和/或功能。例如,诸如移动电话的移动设备可以包括触摸输入设备,而无头服务器或IoT设备可能不包括这样的触摸输入设备。图14中示出的I/O组件的特定示例绝不是限制性的,并且其他类型的组件可以包含在机器1400中。I/O组件1450的分组仅仅是为了简化这个讨论,并且分组绝不是限制性的。在各种示例中,I/O组件1450可以包括用户输出组件1452和用户输入组件1454。用户输出组件1452可以包括例如用于显示信息的显示组件(例如,液晶显示器(LCD)或投影仪)、声学组件(例如,扬声器)、触觉组件(例如,振动电机或力反馈设备)和/或其他信号生成器。用户输入组件1454可以包括例如字母数字输入组件(例如,键盘或触摸屏)、定点组件(例如,鼠标设备、触摸板或其他定点工具)和/或触觉输入组件(例如,提供位置和/或触摸力或触摸手势的物理按钮或触摸屏),该触觉输入组件被配置为接收各种用户输入,例如用户命令和/或选择。
在一些示例中,I/O组件1450可以包括生物识别组件1456、运动组件1458、环境组件1460和/或位置组件1462,以及广泛的其他物理传感器组件。生物识别组件1456可以包括例如检测身体表情(例如,面部表情、声音表情、手势或身体姿势或眼睛跟踪)、测量生物信号(例如,心率或脑电波)以及识别个人(例如,经由基于语音、视网膜、指纹和/或面部的识别)的组件。运动组件1458可以包括例如加速度传感器(例如,加速度计)和旋转传感器(例如,陀螺仪)。环境组件1460可以包括例如照明传感器、温度传感器、湿度传感器、压力传感器(例如,气压计)、声学传感器(例如,用于检测环境噪声的麦克风)、物理接近传感器(例如、附近物体的红外感测)和/或可以提供与周围物理环境对应的指示、测量或信号的其他组件。位置组件1462可以包括例如位置传感器(例如,全球定位系统(GPS)接收器)、高度传感器(例如,可以从中导出高度的气压传感器)和/或方向传感器(例如,磁力计)。
I/O组件1450可以包括通信组件1464,实现可用于经由相应的通信耦合1472和1482将机器1400耦合到网络1470和/或设备1480的各种技术。通信组件1464可以包括一个或多个网络接口组件或与网络1470接口的其他合适的设备。通信组件1464可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(NFC)、蓝牙通信、Wi-Fi和/或经由其他模态通信的组件。设备1480可以包括其他机器或各种外围设备(例如,经由USB耦合)。
在一些示例中,通信组件1464可以检测标识符或包括适于检测标识符的组件。例如,通信组件1464可以包括射频识别(RFID)标签阅读器、NFC检测器、光学传感器(例如,一维或多维条形码或其他光学代码)和/或声学检测器(例如,识别标记的音频信号的麦克风)。在一些示例中,可以基于来自通信组件1462的信息来确定位置信息,例如但不限于经由互联网协议(IP)地址的地理位置、经由Wi-Fi、蜂窝、NFC、蓝牙或其他无线站识别和/或信号三角测量的位置。
共同未决和共同拥有的美国专利申请序列号16/724,111(标题为“UNIFIEDINTERFACES FOR PAIRED USER COMPUTING DEVICES”并于2019年12月20日提交)和16/724,116(标题为“TELECONFERENCING INTERFACES AND CONTROLS FOR PAIRED USER COMPUTINGDEVICES”并于2019年12月20日提交)均通过引用全文并入本文。
尽管已经描述了各种实施例,但是该描述旨在是示例性的,而不是限制性的,并且应当理解,在实施例的范围内的更多实施例和实现方式是可能的。尽管在附图中图示了许多可能的特征组合并且在该详细描述中进行了讨论,但是所公开的特征的许多其他组合也是可能的。除非特别限制,否则任何实施例的任何特征都可以与任何其他实施例中的任何其他特征或元素组合使用或替代任何其他特征或元素。因此,应当理解,本公开中所示和/或讨论的任何特征可以以任何合适的组合一起实施。因此,除了根据所附权利要求及其等同物之外,实施例不受限制。此外,可以在所附权利要求的范围内进行各种修改和改变。
尽管前文已经描述了被认为是最佳模式和/或其他示例的内容,但是应当理解,可以在其中进行各种修改,并且可以以各种形式和示例来实现在本文中所公开的主题,并且这些教导可以应用在许多应用中,本文仅描述了其中的一些。所附权利要求旨在对落入本教导的真实范围内的任何和所有应用、修改和变化提出权利要求。
除非另有说明,否则在本说明书中(包括在随后的权利要求中)阐述的所有测量值、值、额定值、位置、幅度、尺寸和其他规格都是近似的而不是精确的。其旨在具有与其所涉及的功能以及其所涉及的领域中的惯例一致的合理范围。
保护范围仅由以下权利要求限制。当根据本说明书和随后的审查历史进行解释时,该范围旨在并且应当被解释为与权利要求中使用的语言的普通含义一致,并且包括所有结构和功能等价物。尽管如此,权利要求中的任何一项均不旨在涵盖未能满足《专利法》第101、102或103条要求的主题,也不应以这种方式对其进行解释。特此否认对这样的主题的任何意外涵盖。
除上文所述外,任何已陈述或说明的内容均无意或不应当被解释为使任何组件、步骤、特征、对象、利益、优势或等同物奉献给公众,无论是否在权利要求书中被提及。
应当理解,在本文中所使用的术语和表达具有与这些术语和表达相对于其对应的调查和研究的相应领域所赋予的普通含义,除非在本文中另外阐述了特定含义。诸如“第一”和“第二”等关系术语可仅用于将一个实体或动作与另一个区分开来,而不必要求或暗示这样的实体或动作之间的任何实际的这种关系或次序。术语“包括”、“包含”或者其任何其他变体旨在涵盖非排他性包含,使得包括元素列表的过程、方法、物品或装置不仅包括那些元素,而且可能包括未明确列出的其他元素或这样的过程、方法、物品或装置所固有的元素。在没有进一步约束的情况下,以“一”或“一个”开头的元素不排除在包括该元素的过程、方法、物品或装置中存在额外相同元素。
提供本公开的摘要以允许读者快速确定技术公开的性质。提交时理解其不会被用来解释或限制权利要求的范围或含义。此外,在上述详细描述中,可以看出,为了简化公开的目的,在各种示例中将各种特征组合在一起。该公开方法不应当被解释为反映权利要求需要比每个权利要求中明确列举的更多特征的意图。相反,如以下权利要求所反映的,发明主题不在于单个公开示例的所有特征。因此,以下权利要求在此并入详细说明中,每个权利要求作为单独要求保护的主题独立存在。
Claims (15)
1.一种第一设备,包括:
处理器;以及
在其中存储指令的机器可读介质,所述指令当由所述处理器运行时使得所述第一设备用于:
识别向客户端连接服务注册的第二设备,其中,所述第二设备不同于所述第一设备;
经由数据通信网络从所述客户端连接服务获得用于经由所述客户端连接服务向所述第二设备递送请求消息的第一资源标识符;
基于所获得的第一资源标识符来识别针对指向所述第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在所述客户端连接服务中所包括的第一主机;
经由所述数据通信网络向所述客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由所述客户端连接服务递送到所述第二设备;以及
经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第一响应消息作为对所述第一请求消息的响应。
2.根据权利要求1所述的第一设备,其中,所述指令还使得所述第一设备用于:
与第一用户标识符相关联地、利用认证服务来认证所述第一设备;以及
向所述客户端连接服务提供第一令牌,所述第一令牌反映利用所述认证服务对所述第一设备的所述认证。
3.根据权利要求1所述的第一设备,其中,所述指令还使得所述第一设备用于:
从所述第二设备接收信标信号,所述信标信号包括设备标识符和秘密;以及
基于所接收到的秘密对所述第一请求消息进行编码,
其中,所述获得所述第一资源标识符包括从远离所述第一设备的注册表请求与所接收到的设备标识符相关联的资源标识符。
4.一种方法,包括:
在第一设备处识别向客户端连接服务注册的第二设备,其中,所述第二设备不同于所述第一设备;
在所述第一设备处经由数据通信网络从所述客户端连接服务获得用于经由所述客户端连接服务向所述第二设备递送请求消息的第一资源标识符;
在所述第一设备处基于所获得的第一资源标识符来识别针对指向所述第二设备的第一请求消息的第一目标资源,其中,所述第一目标资源指定在所述客户端连接服务中所包括的第一主机;
由所述第一设备经由所述数据通信网络向所述客户端连接服务发送所述第一请求消息到所述第一目标资源,以用于由所述客户端连接服务递送到所述第二设备;以及
在所述第一设备处经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第一响应消息作为对所述第一请求消息的响应。
5.根据权利要求4所述的方法,还包括:
在所述第一设备处经由在所述第一设备与所述客户端连接服务之间的第一传输信道接收由所述第二设备生成的第二请求消息;以及
由所述第一设备经由所述第一传输信道提供第二响应消息作为对所述第二请求消息的响应,以用于由所述客户端连接服务递送到所述第二设备。
6.根据权利要求4所述的方法,还包括:
在所述第一设备处经由数据通信网络从所述客户端连接服务获得用于经由所述客户端连接服务向所述第一设备递送请求消息的第二资源标识符;以及
使得远离所述第一设备的注册表将第一用户标识符与所述第二资源标识符相关联;
其中,所述识别所述第二设备包括:
在所述第一设备处识别多个软件实例,每个软件实例与所述第一用户标识符相关联,所述多个软件实例包括在所述第二设备上运行的第一软件实例,以及
从所述多个软件实例中选择所述第一软件实例。
7.根据权利要求4所述的方法,还包括:
在所述第一设备处在发送所述第一请求消息之后从所述客户端连接服务接收用于经由所述客户端连接服务将向所述第二设备递送请求的第二资源标识符,其中,所述第二资源标识符不同于所述第一资源标识符;
在所述第一设备处基于所接收到的第二资源标识符来识别针对指向所述第二设备的第二请求消息的第二目标资源,其中,所述第二目标资源指定在所述客户端连接服务中所包括的第二主机;
由所述第一设备经由所述数据通信网络向所述客户端连接服务发送所述第二请求消息到所述第二目标资源,以用于由所述客户端连接服务递送到所述第二设备;以及
在所述第一设备处经由所述数据通信网络从所述客户端连接服务接收由所述第二设备提供的第二响应消息作为对所述第二请求消息的响应。
8.一种方法,包括:
由客户端连接服务将第一资源分配给第一设备;
在所述客户端连接服务处接收由第二设备向第一目标资源发送的第一请求消息,其中,所述第二设备不同于所述第一设备;
基于与所述第一资源相对应的所述第一目标资源来选择所述第一设备;
由所述客户端连接服务基于所接收到的第一请求消息来生成第一转发请求消息;
经由第一传输信道将所述第一转发请求消息从所述客户端连接服务传输到所述第一设备;
在所述客户端连接服务处经由所述第一传输信道从所述第一设备接收对所述第一转发请求消息的第一响应消息;以及
从所述客户端连接服务向所述第二设备传输基于所述第一响应消息而生成的第二响应消息作为对所述第一请求消息的响应。
9.根据权利要求8所述的方法,还包括:
获得与所述第一设备相关联的第一用户标识符;
获得与所述第二设备相关联的第二用户标识符;以及
在对所述第一转发请求消息的所述传输之前,确定所述第一用户标识符与所述第二用户标识符相同,
其中,所述第一转发请求消息是基于所述确定所述第一用户标识符与所述第二用户标识符相同而被传输的。
10.根据权利要求8所述的方法,还包括:
在所述客户端连接服务处在第一时间之后接收由所述第二设备向第二目标资源发送的第二请求消息;
基于与所述第一资源相对应的所述第二目标资源来选择所述第一设备;
由所述客户端连接服务基于所接收到的第二请求消息来生成第二转发请求消息;以及
经由与所述第一传输信道不同的第二传输信道将所述第二转发请求消息从所述客户端连接服务传输到所述第一设备。
11.根据权利要求1所述的第一设备,其中,所述指令还使得所述第一设备用于:
经由在所述第一设备与所述客户端连接服务之间的第一传输信道接收由所述第二设备生成的第二请求消息;以及
经由所述第一传输信道提供第二响应消息作为对所述第二请求消息的响应,以用于由所述客户端连接服务递送到所述第二设备。
12.根据权利要求1所述的第一设备,其中,所述指令还使得所述第一设备用于:
经由数据通信网络从所述客户端连接服务获得第二资源标识符,以用于经由所述客户端连接服务向所述第一设备递送请求消息;以及
使得远离所述第一设备的注册表将第一用户标识符与所述第二资源标识符相关联;
其中,所述识别所述第二设备包括:
识别多个软件实例,每个软件实例与所述第一用户标识符相关联,所述多个软件实例包括在所述第二设备上运行的第一软件实例,以及
从所述多个软件实例中选择所述第一软件实例。
13.根据权利要求4所述的方法,其中:
所述第一请求消息包括HTTP(超文本传输协议)请求消息;以及
所述第一响应消息包括HTTP响应消息。
14.根据权利要求8所述的方法,其中:
所述第一请求消息包括HTTP(超文本传输协议)请求消息;以及
所述第二响应消息包括HTTP响应消息。
15.根据权利要求8所述的方法,还包括:
由所述客户端连接服务将第二资源分配给所述第一设备,其中,所述第二资源不同于所述第一资源;
在所述客户端连接服务处接收由所述第二设备向第二目标资源发送的第二请求消息;
基于与所述第二资源相对应的所述第二目标资源来选择所述第一设备;
由所述客户端连接服务基于所接收到的第二请求消息来生成第二转发请求消息;
经由所述第一传输信道将所述第二转发请求消息从所述客户端连接服务传输到所述第一设备;
在所述客户端连接服务处经由所述第一传输信道从所述第一设备接收对所述第二转发请求消息的第三响应消息;以及
从所述客户端连接服务向所述第二设备发送基于所述第三响应消息而生成的第四响应消息作为对所述第二请求消息的响应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/815,900 | 2020-03-11 | ||
US16/815,900 US11457057B2 (en) | 2020-03-11 | 2020-03-11 | Systems and methods for establishing highly secure and resilient persistent communication connections |
PCT/US2021/014260 WO2021183217A1 (en) | 2020-03-11 | 2021-01-21 | Systems and methods for establishing highly secure & resilient persistent communication connections |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115244957A true CN115244957A (zh) | 2022-10-25 |
Family
ID=74587152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180019749.9A Pending CN115244957A (zh) | 2020-03-11 | 2021-01-21 | 用于建立高度安全和弹性的持久通信连接的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11457057B2 (zh) |
EP (1) | EP4118858A1 (zh) |
CN (1) | CN115244957A (zh) |
WO (1) | WO2021183217A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11457057B2 (en) * | 2020-03-11 | 2022-09-27 | Microsoft Technology Licensing, Llc | Systems and methods for establishing highly secure and resilient persistent communication connections |
WO2021232347A1 (en) * | 2020-05-21 | 2021-11-25 | Citrix Systems, Inc. | Cross device single sign-on |
WO2023014695A1 (en) * | 2021-08-03 | 2023-02-09 | Vertiv It Systems, Inc. | Systems and methods for creating a virtual kvm session between a client device and a target device |
WO2023206058A1 (en) * | 2022-04-26 | 2023-11-02 | Citrix Systems, Inc. | Aggregating electronic messages for meetings |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822523A (en) * | 1996-02-01 | 1998-10-13 | Mpath Interactive, Inc. | Server-group messaging system for interactive applications |
US7191236B2 (en) * | 2000-05-02 | 2007-03-13 | Canon Kabushiki Kaisha | Transparent telecommunications system and apparatus |
US7610390B2 (en) * | 2001-12-04 | 2009-10-27 | Sun Microsystems, Inc. | Distributed network identity |
US7181536B2 (en) * | 2002-03-27 | 2007-02-20 | International Business Machines Corporation | Interminable peer relationships in transient communities |
US7366780B2 (en) * | 2002-12-31 | 2008-04-29 | Motorola, Inc. | System and method for controlling and managing sessions between endpoints in a communications system |
US8069435B1 (en) * | 2003-08-18 | 2011-11-29 | Oracle America, Inc. | System and method for integration of web services |
CN101069384B (zh) * | 2004-12-09 | 2010-05-05 | 国际商业机器公司 | 在网络环境中管理基于消息的工作负荷的方法和系统 |
US8700729B2 (en) * | 2005-01-21 | 2014-04-15 | Robin Dua | Method and apparatus for managing credentials through a wireless network |
US7738882B2 (en) * | 2005-06-13 | 2010-06-15 | Toshiba America Research, Inc. | Framework of media-independent pre-authentication improvements: including considerations for failed switching and switchback |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US8144632B1 (en) * | 2006-06-28 | 2012-03-27 | Insors Integrated Communications | Methods, systems and program products for efficient communications during data sharing event |
US20160277261A9 (en) * | 2006-12-29 | 2016-09-22 | Prodea Systems, Inc. | Multi-services application gateway and system employing the same |
US10631068B2 (en) * | 2008-11-26 | 2020-04-21 | Free Stream Media Corp. | Content exposure attribution based on renderings of related content across multiple devices |
US8539359B2 (en) * | 2009-02-11 | 2013-09-17 | Jeffrey A. Rapaport | Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic |
US9015225B2 (en) * | 2009-11-16 | 2015-04-21 | Echostar Technologies L.L.C. | Systems and methods for delivering messages over a network |
US9275054B2 (en) * | 2009-12-28 | 2016-03-01 | Sling Media, Inc. | Systems and methods for searching media content |
US9551983B2 (en) * | 2011-11-15 | 2017-01-24 | Rockwell Automation Technologies, Inc. | Activity set management in a Manufacturing Execution System |
US20140331135A1 (en) * | 2013-01-04 | 2014-11-06 | SookBox LLC | Digital content connectivity and control via a plurality of controllers that are treated as a single controller |
US9736088B1 (en) | 2013-05-01 | 2017-08-15 | PongPro LLC | Structured communication framework |
US10298678B2 (en) * | 2014-02-17 | 2019-05-21 | International Business Machines Corporation | Omnichannel approach to application sharing across different devices |
US20150281227A1 (en) | 2014-03-31 | 2015-10-01 | Symple ID Inc. | System and method for two factor user authentication using a smartphone and nfc token and for the automatic generation as well as storing and inputting of logins for websites and web applications |
US9424417B2 (en) * | 2014-06-04 | 2016-08-23 | Qualcomm Incorporated | Secure current movement indicator |
EP3210350B1 (en) * | 2014-10-21 | 2020-05-20 | Twilio, Inc. | Method for providing a miro-services communication platform |
US10116601B2 (en) * | 2015-02-06 | 2018-10-30 | Jamdeo Canada Ltd. | Methods and devices for display device notifications |
US10341423B2 (en) | 2015-07-31 | 2019-07-02 | Motorola Mobility Llc | Method and apparatus for distributing content using a mobile device |
US10033702B2 (en) * | 2015-08-05 | 2018-07-24 | Intralinks, Inc. | Systems and methods of secure data exchange |
US9942223B2 (en) | 2015-11-25 | 2018-04-10 | Microsoft Technology Licensing, Llc. | Automated device discovery of pairing-eligible devices for authentication |
US20170288943A1 (en) | 2016-03-30 | 2017-10-05 | Microsoft Technology Licensing, Llc | Supplying Context Data to a Servicing Entity |
US10686902B2 (en) * | 2016-05-23 | 2020-06-16 | Twilio Inc. | System and method for a multi-channel notification service |
US10574692B2 (en) | 2016-05-30 | 2020-02-25 | Christopher Nathan Tyrwhitt Drake | Mutual authentication security system with detection and mitigation of active man-in-the-middle browser attacks, phishing, and malware and other security improvements |
US20180053176A1 (en) | 2016-08-19 | 2018-02-22 | Google Inc. | Tap And Pair Via Proximity Sensing |
US10491700B2 (en) * | 2016-11-18 | 2019-11-26 | Sap Se | Application managed service instances |
US10117097B1 (en) | 2017-03-06 | 2018-10-30 | United Services Automobile Association (Usaa) | Short-range cross-device authorization |
CA3066459C (en) | 2017-06-13 | 2023-10-17 | Equinix, Inc. | Service peering exchange |
US11409719B2 (en) * | 2017-07-27 | 2022-08-09 | Sap Se | Co-locating microservice persistence containers within tenant-specific database |
US11032383B2 (en) | 2017-08-15 | 2021-06-08 | Microsoft Technology Licensing, Llc | Event delivery |
EP3998538A1 (en) * | 2017-08-28 | 2022-05-18 | Bright Data Ltd. | Mobile tunnel device for improving web content fetching while on idle state |
US20190190986A1 (en) | 2017-12-19 | 2019-06-20 | Avaya Inc. | Long polling for clustered application load balancing |
US10715564B2 (en) * | 2018-01-29 | 2020-07-14 | Oracle International Corporation | Dynamic client registration for an identity cloud service |
US11539817B1 (en) * | 2018-09-27 | 2022-12-27 | C/Hca, Inc. | Adaptive authentication and notification system |
US11210932B2 (en) * | 2019-05-21 | 2021-12-28 | Apple Inc. | Discovery of and connection to remote devices |
US10893087B1 (en) * | 2019-09-21 | 2021-01-12 | Mass Luminosity, Inc. | Streaming and nonstreaming media transfer between devices |
US11457057B2 (en) * | 2020-03-11 | 2022-09-27 | Microsoft Technology Licensing, Llc | Systems and methods for establishing highly secure and resilient persistent communication connections |
-
2020
- 2020-03-11 US US16/815,900 patent/US11457057B2/en active Active
-
2021
- 2021-01-21 WO PCT/US2021/014260 patent/WO2021183217A1/en unknown
- 2021-01-21 CN CN202180019749.9A patent/CN115244957A/zh active Pending
- 2021-01-21 EP EP21704684.6A patent/EP4118858A1/en active Pending
-
2022
- 2022-09-06 US US17/903,421 patent/US11909806B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2021183217A1 (en) | 2021-09-16 |
US11457057B2 (en) | 2022-09-27 |
US20220417314A1 (en) | 2022-12-29 |
US11909806B2 (en) | 2024-02-20 |
EP4118858A1 (en) | 2023-01-18 |
US20210289047A1 (en) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256392B2 (en) | Unified interfaces for paired user computing devices | |
US11909806B2 (en) | Systems and methods for establishing highly secure and resilient persistent communication connections | |
EP4052493B1 (en) | Proximity-based pairing and operation of user-specific companion devices | |
US10824531B2 (en) | Lending target device resources to host device computing environment | |
US20170012950A1 (en) | Method and apparatus for supporting secure chat | |
WO2021208615A1 (zh) | 用户邀请方法、装置、计算机设备及计算机可读存储介质 | |
US11546391B2 (en) | Teleconferencing interfaces and controls for paired user computing devices | |
CN108141497B (zh) | 一种信息交互的方法及设备 | |
US9819712B2 (en) | Cloud-based conferencing system | |
US20230153449A1 (en) | System and method of providing granual access control | |
EP4172821B1 (en) | Method and system of securing vpn communications | |
US10182084B2 (en) | Cloud-based conferencing system | |
US20230254353A1 (en) | Media streaming from source in online meeting screen-share | |
US20230055726A1 (en) | Techniques for advanced data access control for distributed systems |
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 |