重定向处理方法、虚拟桌面基础架构及可读存储介质与流程

文档序号:21625787发布日期:2020-07-29 02:32阅读:206来源:国知局
重定向处理方法、虚拟桌面基础架构及可读存储介质与流程

本发明涉及云桌面应用技术领域,特别是涉及两种重定向处理方法、虚拟桌面基础架构及可读存储介质。



背景技术:

虚拟桌面基础架构:virtualdesktopinfrastructure(vdi),指一种桌面虚拟机化技术框架,通过虚拟化技术,将一台计算机虚拟成多台逻辑计算机,并将这些逻辑计算机的显示能力通过远程桌面协议交付给用户终端,用户能通过终端使用这些逻辑计算机的资源和显示能力。

但是,目前基于网页重定向实现的云桌面应用,无法有效地响应用户的操作行为,存在用户体验较差,且占用客户端资源的情况。

综上所述,如何在重定向处理中有效地响应用户控制等问题,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供两种重定向处理方法、虚拟桌面基础架构及可读存储介质,能够对用户操作行为进行有效响应,且可减少占用客户端资源。

为解决上述技术问题,本发明提供如下技术方案:

本发明提供了第一种重定向处理方法,应用于虚拟桌面基础架构中的后端设备,包括:

将本地的浏览器实时映射到客户端中的重定向浏览器;

接收所述客户端发送的用户操作信息,并确定用户操作类型;

按照所述用户操作类型对应的处理策略,对所述用户操作信息进行响应处理。

优选地,所述用户操作类型为文件下载,且所述用户操作信息为用户下载操作信息且所述用户下载操作信息包括统一资源定位符和cookies,对所述用户操作信息进行响应处理,包括:

利用所述cookies更新所述浏览器中的cookies;

利用所述浏览器加载所述统一资源定位符,进行文件下载。

优选地,所述用户操作类型为文件上传,且所述用户操作信息为用户上传操作信息,且所述用户上述信息包括统一资源定位符、cookies和不重定向标志,对所述用户操作信息进行响应处理,包括:

利用所述cookies更新所述浏览器中的cookies;

利用所述浏览器加载所述统一资源定位符,进行文件上传;

利用所述不重定向标志暂停执行所述将浏览器实时映射到客户端中的重定向浏览器的步骤。

优选地,所述用户操作为键盘操作和/或鼠标操作,且所述用户操作信息包括键盘和/或鼠标消息,对所述用户操作信息进行响应处理,包括:

利用本地桌面系统对所述键盘和/或鼠标消息进行响应处理;

利用所述响应结果控制所述浏览器。

优选地,所述将本地的浏览器实时映射到客户端中的重定向浏览器,包括:

枚举像素点位置,通过像素点返回的窗口句柄确定出所述客户端中透明窗口的实际可见区域;

利用窗口枚举,获取非透明窗口的可见区域;

结合所述实际可见区域和所述可见区域确定出重定向显示区域;

将所述重定向显示区域对应的重定向显示区域信息反馈给所述客户端。

优选地,所述透明窗口为开始菜单,相应地,结合所述实际可见区域和所述可见区域确定出重定向显示区域,包括:

获取所述开始菜单与重定向区域的交集区域;

利用所述交集区域确定出所述重定向显示区域。

优选地,将浏览器实时映射到客户端中的重定向浏览器,包括:

向所述客户端逐个反馈窗口信息;

对窗口层级进行调整后,所述窗口信息中包括置顶标志。

本发明提供的第二种重定向处理方法,应用于虚拟桌面基础架构中的客户端,包括:

在重定向浏览器中实时映射显示后端设备的浏览器;

对用户操作行为进行监控;

将符合指定条件的用户操作信息发送给所述后端设备。

优选地,所述指定条件为文件下载操作,且所述用户下载操作信息且所述用户下载操作信息包括统一资源定位符和cookies;所述将符合指定条件的用户操作信息发送给所述后端设备,包括:

若加载的所述统一资源定位符包括下载信息,则调用下载处理函数,停止所述重定向浏览器的下载操作;

令所述重定向浏览器将所述统一资源定位符以及所述cookies传递给所述浏览器。

优选地,所述指定条件为文件上传操作,且所述用户操作信息为用户上传操作信息,且所述用户上述信息包括统一资源定位符、cookies和不重定向标志,所述将符合指定条件的用户操作信息发送给所述后端设备,包括:

若用户操作导致加载所述统一资源定位符对应的目标页面,则利用所述重定向浏览器识别所述目标页面中的元素;

判断所述元素是否为上传对应的元素;

如果是,则令所述重定向浏览器停止加载所述目标页面,并将所述cookies、所述不重定向标志和所述统一资源定位符发送给所述浏览器;

如果否,则令所述重定向浏览器加载所述目标页面。

优选地,所述指定条件为鼠标操作和/或键盘操作,且所述用户操作信息包括键盘和/或鼠标消息,所述将符合指定条件的用户操作信息发送给所述后端设备,包括:

利用键盘鼠标监听器监听所有的键盘和/或鼠标消息;

利用所述重定向浏览器对所述所有的键盘和/或鼠标消息进行筛选;

将筛选之后得到的所述键盘和/或鼠标消息发送给所述后端设备。

优选地,所述在重定向浏览器中实时映射显示后端设备的浏览器,包括:

接收所述后端设备发送的重定向显示区域信息;

在所述重定向显示区域信息对应的重定向显示区域内绘制所述浏览器对应的显示内容。

优选地,所述在重定向浏览器中实时映射显示后端设备的浏览器,包括:

每接收所述后端设备发送的一个窗口信息,则利用所述反馈窗口信息并结合本地维护的窗口层级数据处理显示一个所述窗口信息;

若所述窗口信息中包括置顶标志,则处理所述窗口信息并更新所述窗口层级数据。

优选地,还包括:

在窗口化虚拟机桌面过程中,利用所述窗口层级数据恢复最小化后的窗口层级显示。

本发明公开了一种虚拟桌面基础架构,包括:

具有通信连接的客户端和后端设备;

所述客户端包括重定向浏览器和浏览器控制程序,所述客户端用于实现上述第二种重定向处理方法的步骤;

所述后端设备包括浏览器跟踪程序、浏览器插件和浏览器;所述客户端用于实现如上述第一种重定向处理方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述重定向处理方法的步骤。

应用本发明实施例所提供的重定向处理方法,虚拟桌面基础架构中后端设备将本地的浏览器实时映射到客户端中的重定向浏览器;接收客户端发送的用户操作信息,并确定用户操作类型;按照所述用户操作类型对应的处理策略,对用户操作信息进行响应处理。后端设备将本地浏览器实时映射到客户端中的重定向浏览器。在后端设备可接收到客户端发送的用户操作信息时,后端设备基于该用户操作信息对应的处理策略进行响应处理。如此,便可对用户操作进行有效响应,且该用户操作信息由后端设备进行响应,也可减少占用客户端资源。

应用本发明实施例所提供的重定向处理方法,虚拟桌面基础架构中客户端在重定向浏览器中实时映射显示后端设备的浏览器;对用户操作行为进行监控;将符合指定条件的用户操作信息发送给后端设备。在本方法中,客户端中的重定向浏览器实时映射显示后端设备的浏览器。客户端对用户操作进行监控,并将符合指定条件的用户操作信息发送给后端设备,以便后端设备响应用户操作信息,减少占用客户端资源,同时也可实时响应用户操作。

相应地,本发明实施例还提供了与上述两种重定向处理方法相对应的虚拟桌面基础架构和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种虚拟桌面基础架构的结构示意图;

图2为本发明实施例中第一种重定向处理方法的实施流程图;

图3为本发明实施例中第二种重定向处理方法的实施流程图;

图4为本发明实施例中一种文件下载流程示意图;

图5为本发明实施例中一种文件上传流程示意图;

图6为一种窗口覆盖示意图;

图7为本发明实施例中一种键盘和/或鼠标消息响应原理示意图;

图8为本发明实施例中一种键盘和/或鼠标消息响应时序图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于描述,下面将本发明实施例中的相关术语进行解释说明。

虚拟桌面基础架构:virtualdesktopinfrastructure(vdi),指一种桌面虚拟机化技术框架,通过虚拟化技术,将一台计算机虚拟成多台逻辑计算机,并将这些逻辑计算机的显示能力通过远程桌面协议交付给用户终端(客户端),用户能通过客户端使用这些逻辑计算机的资源和显示能力。

虚拟机:virtualmachine(vm),指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。vm需要运行在虚拟化平台上。

宿主机:host,是相对给定的虚拟机而言的,指该虚拟机(vm)所运行的虚拟化平台主机。宿主机向自身所运行的vm提供计算、存储、网络等软硬件资源。

云终端:cloudterminals(ct),vdi交付的终端,主要有瘦客户端和一般软件客户端。

重定向:redirect,指通过各种方法将各种网络请求重新定个方向转到其它位置。

cookies:指网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

网页重定向:webpageredirect(wpr),一种新起的云桌面应用技术,将虚拟机中的浏览器页面内容重定向到用户终端的浏览器上,用户在终端使用云桌面浏览网页时,消耗客户终端的资源,而不是虚拟机的资源,这样可以大大减轻服务端的负载,增强用户体验。

本发明实施例所提供的两种重定向处理方法,可分别应用于如图1所示的虚拟桌面基础架构中的后端设备和客户端。

其中,浏览器1,指运行在后端设备(如虚拟机)的各种主流的网页浏览器,比如chrome、ie、firebox等。

浏览器插件2,负责监控浏览器1的状态,并控制浏览器1的行为如在用户输入url访问网站的时候,拦截url,使后端1浏览器不加载,即不消耗后端资源,将url传递给客户端加载。

浏览器跟踪程序3,主要负责插件2与客户端(客户端)的双向通信转发,以及跟踪浏览器1在虚拟机的位置和可见区域,通知客户端是否以及如何显示重定向浏览器6。

传输通信层4,负责提供前后端间的通信传输。视部署情况,可以是网络、虚拟机串口等。

浏览器控制程序5,主要负责接收后端设备的数据,控制重定向浏览器6的行为(即用户操作后端(虚拟机)浏览器的动作全映射到客户端(终端)浏览器上,并将相关信息反馈给后端设备)

重定向浏览器6,一般可通过webkit或者libcef等开源浏览器引擎内核作为基础特殊实现的浏览器,负责显示网页重定向后的内容。

其中,后端设备指运行在宿主机(host)上的虚拟机(vm),而客户端指瘦终端或者运行在远程物理机上的一个客户端终端软件。

请参考图2,图2为本发明实施例中第一种重定向处理方法的流程图,该方法可应用于虚拟桌面基础架构中的后端设备,包括:

s101、将本地的浏览器实时映射到客户端中的重定向浏览器。

具体的,即采用网页重定向技术(webpageredirect(wpr)),将后端设备的本地浏览器页面内容重定向到客户端的重定向浏览器上。

在利用网页重定向技术时,需要对窗口进行实时跟踪,以避免出现显示异常。而目前,随着透明窗口的应用,现有的窗口跟踪难以跟踪到有效的窗口情况。优选地,为了解决这一问题,可针对不同的窗口类型,采用不同的窗口区域确定方式,然后再确定出重定向显示区域信息。具体的实现过程,包括:

步骤一、枚举像素点位置,通过像素点返回的窗口句柄确定出客户端中透明窗口的实际可见区域;

步骤二、利用窗口枚举,获取非透明窗口的可见区域;

步骤三、结合实际可见区域和可见区域确定出重定向显示区域;

步骤四、将重定向显示区域对应的重定向显示区域信息反馈给客户端。

即当客户端显示的窗口包括透明窗口时,直接采用现有的窗口跟踪利用窗口枚举的原理获取每个窗口的实际大小在进行矩形运算,难以准确的得知该透明窗口的实际可见区域,无法有效跟踪窗口情况。考虑到,透明窗口的透明部分不存在像素点,而实际显示区域存在像素点。基于此,在本实施例中,采用枚举像素点位置,并基于像素点返回的窗口具备确定出透明窗口的实际可见区域。

而对于非透明窗口,则可直接通过窗口枚举方式确定出可见区域。

得到实际可见区域和可见区域之后,便可确定出重定向显示区域。并且将该重定向显示区域对应的重定向显示区域信息反馈给客户端。以便客户端基于该重定向显示区域信息进行显示内容绘制。

为进一步降低窗口跟踪的计算量,对于部分位置已知的透明窗口,还可采用采用以下方式缩小像素点枚举的搜索范围。以透明窗口为开始菜单例,窗口跟踪过程,包括:

步骤一、获取开始菜单与重定向区域的交集区域;

步骤二、利用交集区域确定出重定向显示区域。

其中,步骤二可具体为在交集区域中搜索左边和右边;确定出左边和右边后,在交集区域搜索上边和下边;利用左边、右边、上边和下边确定出重定向显示区域。

通过分析,发现开始菜单和重定向显示区域如果有交集,至少会有两条边相交,也就是至少覆盖一个角落,可视区域的宽高一定在边上,可以通过搜索重定向区域的边来获取。首先,取重定向区域与开始菜单的交集作为搜索区域,然后搜索左边(left)和右边(right),搜索上边(top)和下边(bottom)。然后,基于左边、右边、上边和下边确定出重定向显示区域。

优选地,考虑到实际应用中,客户端中的窗口可能为多个,且存在相互覆盖的情况,为了避免显示异常,将浏览器实时映射到客户端中的重定向浏览器,包括:

步骤一、向客户端逐个反馈窗口信息;

步骤二、对窗口层级进行调整后,窗口信息中包括置顶标志。

也就是说,反馈窗口信息时,逐个反馈,避免混乱,另外出现窗口层级调整后,通过置顶标志,通知客户端进行相应调整。

s102、接收客户端发送的用户操作信息,并确定用户操作类型。

在本申请中,可接受客户端发送的用户操作信息,该用户操作信息科包括多种类型,如文件下载,文件上传,键盘操作和/或鼠标操作等。该用户操作类型可基于用户操作信息的具体内容而定,也可通过读取用户操作信息的类型标签方式确定。

s103、按照用户操作类型对应的处理处理,对用户操作信息进行响应处理。

在本实施例中,可预先为用户操作类型设置对应的处理策略。在得到用户操作信息,并确定出用户操作类型之后,后端设备可基于对应的处理策略对用户操作信息进行响应处理。即使用后端设备对用户操作进行响应,无需占用客户端资源。

由于目前的vdi网页重定向处理中,仍然存在大量问题以及需提供更多的功能。因此,在本实施例中,可针对不同的功能需要,对相应的用户操作信息,进行有效响应。

应用本发明实施例所提供的重定向处理方法,虚拟桌面基础架构中后端设备将本地的浏览器实时映射到客户端中的重定向浏览器;接收客户端发送的用户操作信息,并确定用户操作类型;按照所述用户操作类型对应的处理策略,对用户操作信息进行响应处理。后端设备将本地浏览器实时映射到客户端中的重定向浏览器。在后端设备可接收到客户端发送的用户操作信息时,后端设备基于该用户操作信息对应的处理策略进行响应处理。如此,便可对用户操作进行有效响应,且该用户操作信息由后端设备进行响应,也可减少占用客户端资源。

优选地,提供有效地文件上传处理功能。用户操作信息为用户上传操作信息,且用户上述信息包括统一资源定位符、cookies和不重定向标志,对用户操作信息进行响应处理的过程,包括:

步骤一、利用cookies更新浏览器中的cookies;

步骤二、利用浏览器加载统一资源定位符,进行文件上传;

步骤三、利用不重定向标志暂停执行将浏览器实时映射到客户端中的重定向浏览器的步骤。

在后端设备接收到用户上传操作信息时,首先更新浏览器中的cookies,然后加载统一资源定位符,即url。

其中,不重定向标志,即客户端告知后端设备,对于该url的处理操作,无需进行重定向,即暂停将浏览器的下载动作映射到客户端中的重定向浏览器。即,文件的下载动作仅在后端设备中进行。

优选地,为提供有效地文件上传操作,用户操作信息为用户下载操作信息且用户下载操作信息包括统一资源定位符和cookies,对用户操作信息进行响应处理的过程,包括:

步骤一、利用cookies更新浏览器中的cookies;

步骤二、利用浏览器加载统一资源定位符,进行文件下载。

也就是说,当用户在客户端进行操作,需要上述文件时,上传文件的具体执行动作由后端设备的浏览器进行,以避免出现重定向浏览器在其本地无法找到需要上传的文件。

优选地,解决使用重定向技术后,键盘的快捷键和部分鼠标操作失效,用户操作为键盘操作和/或鼠标操作,且用户操作信息包括键盘和/或鼠标消息,对用户操作信息进行响应处理包括,包括:

步骤一、利用本地桌面系统对键盘和/或鼠标消息进行响应处理;

步骤二、利用响应结果控制浏览器。

为了有效响应用户的鼠标操作和键盘操作,在本实施例中,客户端可将键盘和/或鼠标消息发送给后端设备。其中,键盘和/或鼠标消息,即包括:仅有单一键盘消息、或仅有单一鼠标消息,或既有键盘消息又有鼠标消息。键盘和/或鼠标操作可参照与此,不再一一列举。

后端设备接收到键盘和/或鼠标消息之后,便可利用本地桌面系统对键盘和/或鼠标消息进行响应处理。这里所指的响应处理可具体为在本地桌面系统中对键盘快捷键进行响应,对鼠标的操作进行响应。

然后基于响应的结果来控制浏览器。又因该浏览器与客户端的重定向浏览器之间存在实时映射的关系,因此,用户在客户端可看到其键盘操作或鼠标操作得到了响应。

请参考图3,图3为本发明实施例中第二种重定向处理方法的流程图,该方法可应用于虚拟桌面基础架构中的客户端,该方法可与上述实施例所描述的可应用于虚拟桌面基础架构中的后端设备中的重定向处理方法相互参照。如图3所示的重定向处理方法包括:

s201、在重定向浏览器中实时映射显示后端设备的浏览器。

可利用网页重定向技术,将后端设备的浏览器网页显示内容重定向到用户端的重定向浏览器中。

在利用网页重定向技术时,需要对窗口进行实时跟踪,以避免出现显示异常。即,在重定向浏览器中实时映射显示后端设备的浏览器,具体包括:

步骤一、接收后端设备发送的重定向显示区域信息;

步骤二、在重定向显示区域信息对应的重定向显示区域内绘制浏览器对应的显示内容。

其中,重定向显示区域信息可采用上述实施例所描述的方式获得,在此不再一一赘述。

客户端接收到重定向显示区域信息之后,便可在该重定向显示区域信息对应的重定向显示区域内绘制浏览器对应的显示内容。即在重定向网页时,当有本地其他应用的窗口时,根据具体的遮盖情况显示浏览器中的全部或部分内容,避免显示混淆。

优选地,为了避免窗口显示混乱,重定向浏览器中实时映射显示后端设备的浏览器,包括:

步骤一、每接收后端设备发送的一个窗口信息,则利用反馈窗口信息并结合本地维护的窗口层级数据处理显示一个窗口信息;

步骤二、若窗口信息中包括置顶标志,则处理窗口信息并更新窗口层级数据。

即,后端设备每发送一个窗口信息即进行一次窗口信息处理,且在处理过程中为避免出现窗口层级关系异常,还可结合本地维护的窗口层级数据进行处理。当窗口信息中包括置顶标志时,即可表明窗口层级关系出现一次变化,此时在处理窗口信息时,可同步更新窗口层级数据。该窗口层级数据可用栈的数据结构来维护,也可采用链表方式维护。

优选地,为了有效还原窗口,在窗口化虚拟机桌面过程中,利用窗口层级数据恢复最小化后的窗口层级显示。即,该窗口层级数据可保障最小化后恢复窗口时,维持原有的窗口层级显示。

s202、对用户操作行为进行监控。

用户操作行为可具体为用户在重定向网页中所进行的操作,如新网页加载行为,以及本地的输入设备的监控,如鼠标和键盘等。

s203、将符合指定条件的用户操作信息发送给后端设备。

在本实施例中,为了有效地响应用户操作,可将符合指定条件的用户操作信息发送给后端设备,以便后端设备进行响应处理,以便在使用重定向浏览器时,也能实现相应功能。

应用本发明实施例所提供的重定向处理方法,虚拟桌面基础架构中客户端在重定向浏览器中实时映射显示后端设备的浏览器;对用户操作行为进行监控;将符合指定条件的用户操作信息发送给后端设备。在本方法中,客户端中的重定向浏览器实时映射显示后端设备的浏览器。客户端对用户操作进行监控,并将符合指定条件的用户操作信息发送给后端设备,以便后端设备响应用户操作信息,减少占用客户端资源,同时也可实时响应用户操作。

优选地,为实现文件下载功能,指定条件为文件下载操作,且用户下载操作信息且用户下载操作信息包括统一资源定位符和cookies;将符合指定条件的用户操作信息发送给后端设备,包括:

步骤一、若加载的统一资源定位符包括下载信息,则调用下载处理函数,停止重定向浏览器的下载操作;

步骤二、令重定向浏览器将统一资源定位符以及cookies传递给浏览器。

目前使用重定向网页进行文件下载,用户点击重定向页面中的下载url,会出现如下情况:无反应,厂商没有实现下载功能,或必须要用户点击右键,在右键菜单中选择下载选项,进行下载。而在本实施例中,当需要加载包括下载信息的统一资源定位符时,可调用下载处理函数,停止重定向服务器的下载操作,并且令重定向浏览器将统一资源定位符以及cookies发送给后端设备的浏览器。以便后端设备的浏览器来进行文件下载,减少占用本地客户端资源。即,提供了一种便于用户操作且无需占用客户端资源的文件下载方式。

优选地,提供文件上传功能,指定条件为文件上传操作,且用户操作信息为用户上传操作信息,且用户上述信息包括统一资源定位符、cookies和不重定向标志,将符合指定条件的用户操作信息发送给后端设备,包括:

步骤一、若用户操作导致加载统一资源定位符对应的目标页面,则利用重定向浏览器识别目标页面中的元素;

步骤二、判断元素是否为上传对应的元素;

步骤三、如果是,则令重定向浏览器停止加载目标页面,并将cookies、不重定向标志和统一资源定位符发送给浏览器;

步骤四、如果否,则令重定向浏览器加载目标页面。

即,客户端可通过判断加载目标页面的元素是否为上传对应的元素(如判断是否存在htmlapi和jsapi关键字),即可确定是否出现需要进行文件上传。在用户需要进行文件上传时,客户端可直接将用户上传操作信息反馈给后端设备,以便后端设备基于用户上传操作信息,将后端设备尺寸的相关文件上传至页面。特别地,在进行文件上传时,可令重定向浏览器停止加载目标页面,即此时不重定向网页,可使得文件上传成功。

优选地,为有效地响应客户端的用户操作键盘和鼠标,指定条件为鼠标操作和/或键盘操作,且用户操作信息包括键盘和/或鼠标消息,将符合指定条件的用户操作信息发送给后端设备,包括:

步骤一、利用键盘鼠标监听器监听所有的键盘和/或鼠标消息;

步骤二、利用重定向浏览器对所有的键盘和/或鼠标消息进行筛选;

步骤三、将筛选之后得到的键盘和/或鼠标消息发送给后端设备。

由于,无论焦点在哪个程序上,键盘鼠标监听器都能监听到鼠标消息和键盘消息,此时在本实施例中可利用键盘鼠标监听器监听键盘和/或鼠标消息。然后,利用重定向浏览器对键盘和/或鼠标消息过滤处理,如若焦点在重定向浏览器上,则将键盘和/或鼠标消息投递给协议客户端,由然后由客户端将键盘和/或鼠标消息同步到后端设备。如此,用户的键盘操作和鼠标操作便和被后端设备所获知,以便后端设备进行相应的处理,具体的处理过程可参加上述实施例。

相应于上面的方法实施例,本发明实施例还提供了一种虚拟桌面基础架构,下文描述的虚拟桌面基础架构与上文描述的两种重定向处理方法可相互对应参照。

参见图1所示,该虚拟桌面基础架构包括:

具有通信连接的客户端20和后端设备10;

客户端包括重定向浏览器6和浏览器控制程序5,客户端用于实现如上述对应重定向处理方法的步骤;

后端设备包括浏览器跟踪程序3、浏览器插件2和浏览器1;客户端用于实现如上述对应重定向处理方法的步骤。

客户端20和后端设备10通过传输通信层4实现通信连接。

需要说明的是,本发明实施例所提供的两种重定向处理方法可同时应用于上述虚拟桌面基础架构中,为了便于理解,下面对上述两种重定向处理方法的结合具体应用场景以及相关现有技术进行详细说明。

关于文件上传和文件下载的具体场景:

在目前的vdi网页重定向场景中,当上传的页面重定向后,用户点击上传,会出现两种情况:

1)、按钮不生效,无法上传,即厂商为了前端安全考虑禁用掉前端重定向浏览器的上传能力。

2)、弹出前端本地的文件系统,找不到在后端中期望上传的文件。

上述两种效果,都不能满足用户上传的真正需求。

在目前的vdi网页重定向场景中,用户点击重定向页面中的下载url,会出现如下情况:

1)、无反应,厂商没有实现下载功能。

2)、必须要用户点击右键,在右键菜单中选择下载选项,进行下载。

结合应用本发明实施例所提供的两种重定向处理方法后,可通过判断待重定向的页面是否应该在终端重定向,可以将上传和下载等页面,不进行重定向,进而转移上传下载操作到vm浏览器中,这样不仅满足绝大多数页面重定向卸载服务端资源消耗的需要,也能满足用户上传文件、下载文件的需求,而上传文件和下载文件通常与vm系统环境有交互和依赖,实现整个网页重定向的用户透明化,极大提高用户体验。

具体的,重定向浏览器下载文件:下载请求包含在url中,主流开源浏览器引擎都有对应的下载处理函数,可以通过重写下载处理函数,实现对下载的控制。当加载url包含下载信息,重定向浏览器内核会调用此函数,此函数可以做到不进行下载操作,而是将url传递给后端设备,由后端设备(如虚拟机)来真正执行这个下载操作。

重定向浏览器文件的上传:分多步和多种方法(如用户打开系统对话框,读取系统中的文件或拖拽文件,读取文件),主流的开源浏览器引擎并没直接提供相关接口和事件指明是上传操作,因此需要自行判断url是否是一个包含上传功能的页面。一种可行的方法是判断页面中的脚本内容是否包含执行上传操作的特征代码或关键字,目前主流的上传方式是打开本地文件系统对话框,供用户选择目标文件或文件夹和拖拽文件或文件夹到指定地方,进行自动上传,这些操作都是典型的htmlapi(网页编程接口,其中api为接口,html为网页)和jsapi(应用程序接口,js即javascript,一种编程语言)关键字。经过网页特征识别可以判断是否是上传页面,进而判断是否重定向,不重定向的页面由vm浏览器进行原生操作,即文件上传操作。

具体的,请参考图1和图4,图5;其中,图4为本发明实施例中一种文件下载流程示意图;图5为本发明实施例中一种文件上传流程示意图。

文件下载过程,包括:

1、当重定向浏览器6,加载url的时候,如果是下载的连接,重定向浏览器会通知用户注册的回调函数,回调函数将此时的cookies状态和下载url,通过隧道(经由控制程序5->传输通信层4->跟踪程序3->插件2)传递给虚拟机浏览器1。

2、浏览器插件收到cookies和url,先将浏览器1cookies更新好,然后通知浏览器1加载url。

3、浏览器加载下载url,则会进行下载操作,如果下载需要认真身份,则可以通过最新的cookies进行认证。

4、最后下载的文件保存在虚拟机浏览器配置目录中。

文件上传过程,包括:

1、用户操作重定向浏览器6加载某url,加载过程中,浏览器会将html、js等页面源码下载到本地进行执行,在下载页面后,通过在浏览器6中增加页面分析器,分析页面的代码中是否有上传相关特征关键字(如inputtype=’file’,拖拽文件’drop’到指导区域等html/js关键字),如果有,则此页面不应该重定向。

2、不重定向的页面,终端会通过隧道(经由控制程序5->传输通信层4->跟踪程序3->插件2)传递给虚拟机浏览器1执行。

3、浏览器插件收到cookies和url,先将1浏览器cookies更新好,然后通知浏览器1加载url。

4、后端浏览器3跟踪程序根据不重定向标志,通知前端重定向浏览器6隐藏。

5、此时,用户可见的是虚拟机页面,用户的上传/拖动等打开本地文件的操作,都是在虚拟机中进行。

可见,本发明实施例所提供的两种重定向处理方法结合应用于vdi云桌面,网页重定向场景中,具有如下以下优点:

1)、通过虚拟机浏览器与终端浏览器cookies共享,避免多次认证;

2)、通过重写终端浏览器下载处理函数,实现下载自主可控,来支持终端浏览器的下载转移;

3)、通过页面特征识别的方式,确认目标页面不重定向,来支持终端浏览器的上传转移。

关于网页重定向中的鼠标键盘响应处理:

请参考图6,在目前的vdi网页重定向场景中,会出现如下场景状态:

1、当用户焦点在浏览器2的区域1中,此区域由云终端重定向浏览器渲染显示,此时如果用户按一些浏览器快捷键或系统快捷键(如ctrl+鼠标中间滚轮放缩、ctrl+tab切换任务、trl+d开启浏览器收藏夹等)虚拟机将收不到这些信息的,因为信息都被传递到云终端重定向浏览器上,而重定向浏览器不会默认传递到虚拟机中,自然快捷键无法生效。

2、当用户使用鼠标点击浏览器1的区域2时,用户期望的是整个浏览器1置顶,在软件x和浏览器2的上面,而实际却是没有反应。

出现上述现象原因是,网页重定向后,网页重定向区域是由重定向浏览器渲染,此程序独立于云终端的远程桌面协议客户端,导致在重定向浏览器上的键盘鼠标消息,协议客户端捕捉不到,无法投递给虚拟机,同步到虚拟机的浏览器中。

应用于本发明实施例所提供的两种重定向处理方法后,请参考图7,图7为本发明实施例中一种键盘和/或鼠标消息响应原理示意图。其核心思路是,将远程桌面协议客户端不能捕获到的键盘鼠标消息,由重定向浏览器捕获和过滤,最终同步到虚拟机中。

另外,无论linux、windows、android还是mac等主流操作系统,都有全局监听键盘和鼠标消息的机制。因此实际应用中,可根据系统不同,实现机制和难易程度不同,主体有如下两种实现方式:

一种是用户的焦点在远程桌面协议客户端上,相应的键盘鼠标操作全都被协议客户端捕捉,其他程序捕捉不到,消息被客户端传递到虚拟机中;当用户焦点不在协议客户端中时,用户的键盘鼠标消息被重定向浏览器、监听器或钩子等捕获,经过过滤,传递给远程协议客户端,再由客户端传递给虚拟机,这样键盘和/或鼠标消息同步到虚拟机的浏览器上。

另一种是无论焦点在哪个程序上,键盘鼠标监听器都能监听到键盘和/或鼠标消息,此时将消息发送给重定向浏览器过滤处理,如果焦点在重定向浏览器上,则重定向浏览器再将键盘和/或鼠标消息投递给协议客户端,由客户端将键盘和/或鼠标消息同步到虚拟机中。

具体的,请参考图8,图8为本发明实施例中一种键盘和/或鼠标消息响应时序图。其中,远程桌面协议服务端可运行在宿主机中,而桌面系统自然运行在虚拟机中。

其中,键盘鼠标监听器可以是一个独立的程序,也可以是一个模块集成在其他程序中,比如集成在重定向浏览器、集成在远程桌面协议客户端等。键盘鼠标消息透射优化体验,不仅适用于vdi云桌面下的重定向场景,还适用于一般远程桌面协议重定向的场景,服务端不仅是虚拟机,也可以是物理机。

可见,本发明实施例所提供的两种重定向处理方法,应用于vdi云桌面网页重定向场景中,通过将键盘鼠标消息穿透到虚拟机中,来优化的用户体验。不受限系统,如论客户端和服务器linux、android、mac和windows都适用。即将非焦点远程桌面协议客户端没有捕获到的键盘和鼠标消息,由焦点程序转给协议客户端,协议客户端再将这些键盘和鼠标消息同步到虚拟机中,能够对用户的键盘操作和鼠标操作进行有效响应,能够提高用户体验。

另外,还可通过其他程序进行键盘鼠标消息透射,来补齐远程桌面协议客户端无法捕获的消息,即不仅适用于网页重定向,还适用其他类似重定向技术场景,比如视频重定向(即云终端一个独立于桌面协议客户端的播放器或窗口,播放虚拟机播放器本该播放的内容)。

对于窗口跟踪:

应用本发明实施例所提供的重定向处理方法,考虑到,windowfrompointer这个函数返回一个像素点的窗口句柄,因为其它地方是透明的,显示的是背后的窗口的东西所以理论上这个函数会返回不透明的窗口的句柄,直接写demo验证发现确实是这样的。也就是可以通过枚举像素点的位置然后通过像素点返回的窗口句柄判断实际可见区域来确定开始菜单的实际显示区域。

近一步,发现通过分析,开始菜单和显示区域如果有交集,至少会有两条边相交,也就是至少覆盖一个角落。基于此可降低时间复杂度。

具体实现过程,包括:

切割区域:首先取客户区域(重定向区域)与开始菜单的交集作为搜索区域,可解决透明窗口(如小窗口,小图标)问题,特定场景下加快计算速度搜索left和right:left和right的位置通过上边和下边来获取;具体的,可

定义preleftbackleft指向left的搜索边界,初始化为左边和右边;定义prerightbackright指向right的搜索边界,初始化为左边和右边;left不能超过right;然后执行以下步骤:

1.left取pt1(left,top)pt2(left,bottom)top和bottom固定为上下边;

2.如果pt1和pt2都不是说明没有执行3,如果有任一个执行4;

3.preleft取left,left往后跳(preleft+backleft)/2;

4.说明当前的pt1和pt2的连线上已经有开始菜单的可视区域了,取backleft=left,left往前跳(preleft+backleft)/2;

5.当preleft和backleft之前相差一个像素或者相等就找到了left的位置;

6.right取pt3(right,top)pt4(right,bottom)top和bottom固定为上下边;

7.如果pt3和pt4都不是说明没有执行8,如果有任一个执行9;

8.backright取right,right往前跳(preright+backright)/2;

9.说明当前的pt3和pt4的连线上已经有开始菜单的可视区域了,取preright=right,right往后跳(preright+backright)/2;

10.当preright和backright之前相差一个像素或者相等就找到了right的位置了11.继续执行1;

搜索top和bottom:

搜索top和bottom则和搜索left和right一致,只是把left和right固定,二分加减top和bottom的值,因此在此不再一一赘述。

如此,整体时间复杂度从n*n直接降到了logn性能测试。

可见,在诸如win10系统下,因为win10存在大量的透明窗口,常规窗口跟踪方法失效了,上述方案通过win10特征(即开始菜单和显示区域如果有交集,至少会有两条边相交,也就是至少覆盖一个角落),过滤掉窗口的透明部分。

窗口层级关系维护:

应用本发明实施例所提供的两种重定向处理方法,对于窗口层级关系维护方案有两种:一种:每次服务端都将所有变化的重定向浏览器窗口位置和可视区域,发送给客户端,并告知这个窗口集合的层次关系;另一种:(前提事实,没有只有一个活动窗口,一个置顶窗口,其他窗口层级关系并没有变化)服务端一个个传递可视区域变化的窗口,每一个消息带上当前窗口是否置顶(活动窗口)的标志,即服务端每传递一个窗口信息,客户端处理一个,当窗口消息带置顶(活动窗口)标志的时候,则将其客户端窗口置顶,其他的则保持原层级不变,仅进行可视区域裁剪,不用调整本地浏览器的层级关系;另一方面,客户端使用栈的数据结构,存储这些窗口的置顶顺序,以供后来需要恢复层级关系的场景使用。客户端,每次收到置顶的窗口消息,就调整窗口层级栈顺序,以保证层级正确。

可见,虚拟机服务端与客户端,关于虚拟机窗口层级关系消息的传递和客户端重定向窗口层级的维护,可解决多重定向窗口重叠,层级错乱的问题和窗口化的虚拟机桌面场景,最小化后恢复原样问题。

另外,应用本发明实施例所提供的两种重定向处理方法之后,通过用户可配置的url通配符或者正则表达式,可以实现任意网页的重定向。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种重定向处理方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的重定向处理方法的步骤。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1