远程桌面输入事件的会话隔离方法及系统与流程
本技术涉及远程控制与会话管理,尤其涉及一种远程桌面输入事件的会话隔离方法及系统。
背景技术:
1、用户使用远程桌面时,经常会连续执行打开键盘、关闭键盘、重新打开键盘、切换远程电脑或断线重连等操作。这些操作在用户看来只是几次点击,但应用内部需要经过窗口创建、焦点变化、键盘显示、文本提交和网络连接等多个环节,而且这些环节的完成顺序并不固定。
2、例如,用户关闭旧键盘后马上打开新键盘,旧键盘的已经显示通知可能稍后才到达。如果应用不能判断这条通知来自旧键盘,就可能把新键盘的状态改错;旧页面迟到的关闭命令还可能把刚打开的新键盘关闭。用户看到的现象就是键盘突然消失、按钮状态不正确、需要重复点击,甚至出现输入没有反应。
技术实现思路
1、本技术提供了一种远程桌面输入事件的会话隔离方法及系统,旨在解决用户使用远程桌面时,经常会连续执行打开键盘、关闭键盘、重新打开键盘、切换远程电脑或断线重连等操作。这些操作在用户看来只是几次点击,但应用内部需要经过窗口创建、焦点变化、键盘显示、文本提交和网络连接等多个环节,而且这些环节的完成顺序并不固定的问题。
2、第一方面,本技术实施例提供了一种远程桌面输入事件的会话隔离方法,所述方法包括:
3、建立远程控制连接,获取当前远程会话标识;响应输入界面开启操作,生成当前本地输入生命周期标识,将当前本地输入生命周期标识与当前远程会话标识绑定,设置当前输入状态为正在开启;
4、接收携带本地输入生命周期标识的异步事件,对于状态事件,仅当状态事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致且当前输入状态允许状态转换时,更新当前输入状态;对于关闭命令,仅当关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识一致时,设置当前输入状态为正在关闭并释放输入界面实例;
5、对于携带本地输入生命周期标识与远程会话标识的输入事件,同时判断输入事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致、输入事件携带的远程会话标识与当前远程会话标识一致、当前输入状态为可输入状态,均满足时将输入事件注入当前远程会话,任一条件不满足时丢弃输入事件;检测到远程控制连接断开、重连或切换时,更新当前远程会话标识,使携带旧远程会话标识的输入事件失效。
6、在一些实施例中,所述建立远程控制连接,获取当前远程会话标识,包括:发起远程控制连接请求,与远程计算机建立远程控制连接;远程控制连接建立成功后,为本次远程控制连接生成唯一对应的当前远程会话标识;将当前远程会话标识与远程控制连接绑定存储。
7、在一些实施例中,所述响应输入界面开启操作,生成当前本地输入生命周期标识,包括:检测到用户触发输入界面开启操作时,响应输入界面开启操作;生成在预定范围内不重复的当前本地输入生命周期标识,当前本地输入生命周期标识采用单调递增序号或全局唯一标识;将当前本地输入生命周期标识与本次输入界面开启操作关联。
8、在一些实施例中,所述将当前本地输入生命周期标识与当前远程会话标识绑定,设置当前输入状态为正在开启,包括:建立当前本地输入生命周期标识与当前远程会话标识的绑定关系,形成生命周期-会话绑定对;将当前输入状态设置为正在开启,正在开启状态下不允许注入输入事件;将生命周期-会话绑定对与当前输入状态存储于会话隔离校验模块。
9、在一些实施例中,所述接收携带本地输入生命周期标识的异步事件,对于状态事件,仅当状态事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致且当前输入状态允许状态转换时,更新当前输入状态,包括:接收异步事件,异步事件包括状态事件、关闭命令与输入事件,每个异步事件均携带本地输入生命周期标识;对于状态事件,提取状态事件携带的本地输入生命周期标识,将状态事件携带的本地输入生命周期标识与当前本地输入生命周期标识比对;状态事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致,且当前输入状态允许目标状态转换时,根据状态事件更新当前输入状态;标识不匹配的状态事件认定为迟到事件并丢弃。
10、在一些实施例中,所述对于关闭命令,仅当关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识一致时,设置当前输入状态为正在关闭并释放输入界面实例,包括:对于关闭命令,提取关闭命令携带的期望本地输入生命周期标识,将关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识比对;关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识一致时,将当前输入状态设置为正在关闭,释放当前输入界面实例;关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识不一致时,忽略关闭命令。
11、在一些实施例中,所述对于携带本地输入生命周期标识与远程会话标识的输入事件,同时判断输入事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致、输入事件携带的远程会话标识与当前远程会话标识一致、当前输入状态为可输入状态,均满足时将输入事件注入当前远程会话,包括:对于输入事件,提取输入事件携带的本地输入生命周期标识与远程会话标识;同时判断输入事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致、输入事件携带的远程会话标识与当前远程会话标识一致、当前输入状态为可输入状态;三项条件均满足时,将输入事件注入当前远程会话,由当前远程会话将输入事件发送至远程计算机。
12、在一些实施例中,所述任一条件不满足时丢弃输入事件,包括:输入事件携带的本地输入生命周期标识与当前本地输入生命周期标识不一致时,认定输入事件来自旧输入界面实例,丢弃输入事件;输入事件携带的远程会话标识与当前远程会话标识不一致时,认定输入事件属于旧远程会话,丢弃输入事件;当前输入状态不为可输入状态时,认定输入事件到达时机不合法,丢弃输入事件;记录丢弃输入事件的事件类型、当前本地输入生命周期标识、当前远程会话标识与丢弃原因。
13、在一些实施例中,所述检测到远程控制连接断开、重连或切换时,更新当前远程会话标识,使携带旧远程会话标识的输入事件失效,包括:实时监测远程控制连接状态,检测到远程控制连接断开、重连或切换时,触发远程会话标识更新流程;远程控制连接重连或切换成功后,生成新的当前远程会话标识,将新的当前远程会话标识与重连或切换后的远程控制连接绑定;更新当前远程会话标识后,所有携带旧远程会话标识的输入事件在三条件校验时因远程会话标识不匹配而被丢弃,实现旧输入事件失效;可同步关闭当前输入界面,或保留输入界面但禁止输入。
14、第二方面,本技术提供了一种远程桌面输入事件的会话隔离系统,所述系统包括:
15、连接建立单元,用于建立远程控制连接,获取当前远程会话标识;响应输入界面开启操作,生成当前本地输入生命周期标识,将当前本地输入生命周期标识与当前远程会话标识绑定,设置当前输入状态为正在开启;
16、事件接收单元,用于接收携带本地输入生命周期标识的异步事件,对于状态事件,仅当状态事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致且当前输入状态允许状态转换时,更新当前输入状态;对于关闭命令,仅当关闭命令携带的期望本地输入生命周期标识与当前本地输入生命周期标识一致时,设置当前输入状态为正在关闭并释放输入界面实例;
17、事件失效单元,用于对于携带本地输入生命周期标识与远程会话标识的输入事件,同时判断输入事件携带的本地输入生命周期标识与当前本地输入生命周期标识一致、输入事件携带的远程会话标识与当前远程会话标识一致、当前输入状态为可输入状态,均满足时将输入事件注入当前远程会话,任一条件不满足时丢弃输入事件;检测到远程控制连接断开、重连或切换时,更新当前远程会话标识,使携带旧远程会话标识的输入事件失效。
18、本技术所提供的方法具有以下有益效果:
19、第一,每次开启输入界面均使用新的本地输入生命周期标识,旧实例的可见性、隐藏或结束回调不能覆盖当前实例状态,隔离迟到状态回调。
20、第二,关闭命令必须携带并匹配期望生命周期标识,快速打开、关闭、重开时,旧页面不能关闭新创建的输入界面,避免旧关闭命令误作用。
21、第三,本地输入生命周期标识与远程会话标识联合校验,可在远程电脑切换或断线重连后使旧文本和按键失效,降低输入进入错误远程目标的风险,阻止跨远程会话输入。
22、第四,输入状态作为独立门控条件,使正在开启和正在关闭期间的事件即使标识匹配也不能注入远程会话,阻止中间状态误输入。
23、第五,分类型校验不依赖回调严格按序到达,可在原生层或跨平台层状态暂时滞后时提供第二道阻断,提高异步链路容错性。
24、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com