CN108052377B - 基于云的输入处理方法、装置、服务器和存储介质 - Google Patents
基于云的输入处理方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN108052377B CN108052377B CN201711487366.6A CN201711487366A CN108052377B CN 108052377 B CN108052377 B CN 108052377B CN 201711487366 A CN201711487366 A CN 201711487366A CN 108052377 B CN108052377 B CN 108052377B
- Authority
- CN
- China
- Prior art keywords
- input event
- cloud
- input
- interface
- cloud application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/466—Transaction processing
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明揭示了一种基于云的输入处理方法、装置、服务器、计算机可读存储介质及电子设备。所述基于云的输入处理方法包括:响应于用户在客户端的输入,云服务器的云应用端根据来自所述客户端的远程输入消息更新所述云应用端的远程输入事件队列;以及所述云服务器的云应用端将用于获取输入事件的应用程序接口API获取输入事件的操作重定向至所述远程输入事件队列,并对从所述远程输入事件队列获取的输入事件进行处理。基于本实施例提供的基于云的输入处理方案,相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
Description
技术领域
本发明涉及计算机应用技术领域,特别涉及一种基于云的输入处理方法、装置、服务器、计算机可读存储介质和电子设备。
背景技术
随着云技术的发展,越来越多的软件提供商选择通过云应用的方式来提供软件服务。简单来说,云应用的真实程序(可称为“云应用端”)在云服务器上运行,由云服务器将程序运行的输出图像传送到用户设备上进行显示,用户设备上运行的相应程序(可称为“客户端”)则将用户在本地的键盘和鼠标等输入操作传送到云服务器,由此来实现对云应用端的操作控制。
就输入处理的具体实现而言,云应用端在接收到来自客户端的输入消息(例如键盘消息)时,一般通过SendInput(发送输入)等系统级API(Application ProgrammingInterface,应用程序接口)将消息转发到系统消息队列中,与系统全局的输入消息一起被处理。如果在云服务器上同时运行多个云应用端,对应于多个用户设备上的客户端,来自这些不同客户端的输入消息都进入系统消息队列,会对系统全局的输入状态同时产生影响,从而多造成个云应用端之间的相互干扰。
针对云服务器上多个云应用端的输入处理,目前主要通过虚拟机的方式来避免相互之间的干扰。具体而言,可在云服务器上安装多台虚拟机,每台虚拟机都是一个独立的操作系统,因此可分别安装一个云应用端,每个云应用端收到来自客户端的输入消息,可按原有方式转发至其所在虚拟机的系统消息队列进行处理,从而避免与其他虚拟机中收到的输入消息产生干扰。
然而,由于虚拟机的性能开销往往远大于云应用端本身的性能开销,因此采用上述虚拟机的方式导致云服务器上云应用端的并发数量太少,资源利用率太低。
发明内容
为了解决相关技术中通过虚拟机实现云应用端输入处理带来的并发数量少和资源利用率低等技术问题,本发明提供了一种基于云的输入处理方法、装置、服务器、计算机可读存储介质和电子设备。
根据本发明的实施例,提供一种基于云的输入处理方法,所述方法包括:响应于用户在客户端的输入,云服务器的云应用端根据来自所述客户端的远程输入消息更新所述云应用端的远程输入事件队列;以及所述云服务器的云应用端将用于获取输入事件的应用程序接口API获取输入事件的操作重定向至所述远程输入事件队列,并对从所述远程输入事件队列获取的输入事件进行处理。
在一个实施例中,所述的将用于获取输入事件的API获取输入事件的操作重定向至所述远程输入事件队列,包括:通过钩子注入HOOK的方式将直接输入DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从所述远程输入事件队列中获取输入事件。
在一个实施例中,所述的通过HOOK的方式将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从所述远程输入事件队列中获取输入事件,包括:通过HOOK的方式将所述DirectInput接口中获取设备数据GetDeviceData函数修改为从所述远程输入事件队列中获取输入事件。
在一个实施例中,所述用于获取输入事件的API包括DirectInput接口,所述方法还包括:在启动所述云应用端时将所述DirectInput接口设置为非独占和后台工作模式。
在一个实施例中,所述的将所述DirectInput接口设置为非独占和后台工作模式,包括:通过HOOK的方式将所述DirectInput接口中设置协作等级SetCooperativeLevel函数的参数修改为非独占模式DISCL_NONEXCLUSIVE及后台模式DISCL_BACKGROUND。
在一个实施例中,所述方法还包括:根据所述云应用端设置的输入事件数据格式对所述远程输入事件队列中的输入事件进行封装。
在一个实施例中,所述用于获取输入事件的API包括DirectInput接口;在所述根据所述云应用端设置的输入事件数据格式对所述远程输入事件队列中的输入事件进行封装之前,所述方法还包括:通过HOOK的方式记录所述DirectInput接口中设置数据格式SetDataFormat函数设置的输入事件数据格式。
根据本发明的实施例,提供一种基于云的输入处理装置,所述装置包括:队列更新模块,设置为响应于用户在客户端的输入,根据来自所述客户端的远程输入消息更新所述云应用端的远程输入事件队列;事件获取模块,设置为将用于获取输入事件的API获取输入事件的操作重定向至所述远程输入事件队列;以及事件处理模块,设置为对从所述远程输入事件队列获取的输入事件进行处理。
在一个实施例中,所述事件获取模块设置为通过HOOK的方式将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从所述远程输入事件队列中获取输入事件。
在一个实施例中,所述事件获取模块设置为通过HOOK的方式将所述DirectInput接口中GetDeviceData函数修改为从所述远程输入事件队列中获取输入事件。
在一个实施例中,所述用于获取输入事件的API包括DirectInput接口,所述装置还包括:接口设置模块,用于在启动所述云应用端时将所述DirectInput接口设置为非独占和后台工作模式。
在一个实施例中,所述接口设置模块用于通过HOOK的方式将所述DirectInput接口中SetCooperativeLevel函数的参数修改为DISCL_NONEXCLU-SIVE|DISCL_BACKGROUND。
在一个实施例中,所述装置还包括:消息封装模块,用于根据所述云应用端设置的输入事件数据格式对所述远程输入事件队列中的输入事件进行封装。
在一个实施例中,所述用于获取输入事件的API包括DirectInput接口;所述装置还包括:格式记录模块,用于通过HOOK的方式记录所述DirectInput接口中SetDataFormat函数所设置的输入事件数据格式。
根据本发明的实施例,提供一种云服务器,与运行客户端的用户设备通信,用于运行云应用端、接收所述客户端发送的输入事件、并将所述云应用端响应所述输入事件产生的输出图像发送至所述客户端,所述云服务器包括上述的基于云的输入处理装置。
根据本发明的实施例,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于云的输入处理方法。
根据本发明的实施例,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述的基于云的输入处理方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
基于本发明实施例提供的基于云的输入处理方案,相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是一种常用的基于云的输入处理方法中云交互系统的架构示意图;
图2是根据一示例性实施例示出的一种基于云的输入处理方法的流程图;
图3是根据另一示例性实施例示出的一种基于云的输入处理方法的流程图;
图4是根据再一示例性实施例示出的一种基于云的输入处理方法的流程图;
图5是根据一示例性实施例示出的应用图4所示方法的系统交互流程图;
图6是根据一示例性实施例示出的应用图5所示流程的系统框图;
图7是根据一示例性实施例示出的一种基于云的输入处理装置的框图;
图8是根据另一示例性实施例示出的一种基于云的输入处理装置的框图;
图9是根据一示例性实施例示出的一种云服务器的框图;
图10示出了可以应用本发明实施例的基于云的输入处理方法或基于云的输入处理装置的示例性系统架构的示意图;
图11示出了适于用来实现本发明实施例的基于云的输入处理的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中的流程图和框图,图示了按照本发明各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
通过下文的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
云交互系统包括云服务器和用户设备,用于运行云游戏等交互式云应用。云应用分别运行在服务器和用户设备的程序端通常被称为Trace端(本公开中也称云应用端)和Retrace端(本公开中也称客户端)。其中,云应用是指:应用的真实程序在云服务器上运行,同时将程序的运行画面传送至用户设备上进行显示,通过将用户设备本地的输入事件(例如键盘和鼠标输入事件)传送到云服务器来实现对程序的控制。以云游戏为例,Trace端是指运行在云服务器上的游戏程序,其执行游戏的主要逻辑运行,并与用户交互有关的图形界面,经网络传送给Retrace端;Retrace端是指运行在用户设备上的客户端程序,用于显示Trace端的游戏图形界面,并将用户的鼠标、键盘等设备输入,经网络传送给Trace端。
目前基于云的常用输入处理方式通常通过图1所示的云交互系统来实现。如图1所示,由用户设备10上运行的客户端101对系统分发的输入消息进行封装,通过网络将封装后的输入消息发送至云服务器20上所布置的虚拟机21中运行的云应用端211。云应用端211在接收到来自客户端101的输入消息时,通过SendInput等系统级API将消息转发到系统消息队列中,进而由云应用端211的消息处理逻辑进行处理。为了实现在云服务器20上实现多个云应用端的并发处理,可通过布置多台虚拟机的方式,每台虚拟机中运行一个云应用端并且每台虚拟机具有各自的系统消息队列,从而避免来自不同客户端的输入消息相互之间产生干扰。
然而,由于虚拟机的性能开销往往远大于云应用端本身的性能开销,因此采用上述虚拟机的方式导致云服务器上云应用端的并发数量太少,资源利用率太低。
为解决上述问题,本发明实施例提供一种基于云的输入处理方法、装置、服务器和计算机可读存储介质,下面通过实施例分别加以详细说明。
图2是根据一示例性实施例示出的一种基于云的输入处理方法的流程图。如图2所示,该基于云的输入处理方法可以由云服务器执行,可包括以下步骤210-250。
在步骤210中,响应于用户在客户端的输入,云服务器的云应用端根据来自客户端的远程输入消息更新云应用端的远程输入事件队列。
本发明实施例无需修改客户端的实现,用户通过用户设备的输入装置进行的输入操作,仍然由用户设备上运行的客户端按输入事件封装成输入消息后经由网络发送至云服务器。这里的输入装置包括但不限于键盘、鼠标、轨迹球、控制手柄、力回馈设备等。这里的输入操作、输入事件和输入消息是从不同角度对输入的描述,举例而言,输入操作可以包括用户在键盘上按下“shift”键;相应的,客户端等应用程序基于该操作可生成自身可识别的输入事件,例如为“shift down”(shift按下);输入事件在不同的设备、程序和接口之间传递时则会被封装成符合约定格式的输入消息。
接续,云服务器的云应用端接收客户端发送的远程输入消息,并通过解析该消息来获取相应的远程输入事件。与图1所示方式中云应用端将解析后输入事件传递至虚拟机的系统消息队列不同,本发明的实施例中,每个云应用端都维护各自的远程输入事件队列。相应的,云服务器的云应用端基于上述消息解析的结果来更新自身的远程输入事件队列。
在步骤230中,云服务器的云应用端将用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列。
对于云应用端用来获取输入事件的API而言,其默认会从基于系统消息队列分发的输入消息来维护的缺省输入事件队列中获取输入事件,因此通常情况下该API获取的是本地输入事件。对于图1所示的虚拟机方式而言,由于远程输入消息会被传递到系统消息队列中,因此远程输入事件会与本地输入事件一起分发至上述缺省输入事件队列中。
与上述默认方式不同,本发明实施例中对用于获取输入事件的API进行修改,将其获取输入事件的操作重定向至步骤210更新的远程输入事件队列。这样一来,云服务器上的每个云应用端都维护各自的远程输入事件队列,并将上述API获取输入事件的操作重定向至该远程输入事件队列,而避免从缺省输入事件队列中获取输入事件。
在步骤250中,云服务器的云应用端对从远程输入事件队列获取的输入事件进行处理。
云服务器的云应用端通过用于获取输入事件的API从远程输入事件队列获取到来自客户端的输入事件后,由云应用端的消息处理逻辑作出响应,从而实现对用户设备侧输入操作的模拟。在一个实施例中,消息处理逻辑作出响应后,云应用端的用户界面或运行画面可能发生变化,变化后的输出图像再经由网络回传至客户端,从而使用户产生云应用端是在用户设备本地上运行的真实体验。
基于上述实施例提供的基于云的输入处理方法,通过将云应用端用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列,免于处理系统消息队列中的输入事件,也就无需受到系统全局输入事件的影响,从而在无需采用虚拟机的情况下实现了避免多个云应用端之间输入事件的相互干扰。相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
图3是根据另一示例性实施例示出的一种基于云的输入处理方法的流程图。如图3所示,该基于云的输入处理方法可以由云服务器执行,可包括步骤305-330。
在步骤305中,在启动云服务器的云应用端时将DirectInput接口设置为非独占和后台工作模式。
DirectInput(直接输入)接口是有关鼠标、键盘、控制手柄、力回馈设备以及其他输入装置的一组API,用来基于这些输入装置的操作向运行的程序提供输入事件的获取功能。在本发明实施例中,用户设备侧的客户端可通过DirectInput接口获取基于用户操作产生的输入事件,进而封装成输入消息经网络转发至云应用端;云服务器侧的云应用端也可通过DirectInput接口获取输入事件。
为了实现云服务器对多云应用端并发输入事件的处理,本步骤中,在启动云应用端进行DirectInput接口初始化时,将DirectInput接口设置为非独占和后台工作模式。设置DirectInput接口的非独占和后台工作模式后,新启动的云应用端进程不会影响正在使用DirectInput接口的云应用端进程,从而保证多个云应用端进程能够同时使用DirectInput接口而避免相互影响。
在一个实施例中,可通过HOOK(钩子注入)的方式将DirectInput接口SetCooperativeLevel(设置协作等级)函数的第二个参数修改为DISCL_NONEXCLUSIVE|DISCL_BACKGROUND(非独占模式|后台模式)。
在步骤310中,响应于用户在客户端的输入,云服务器的云应用端根据来自客户端的远程输入消息更新云应用端的远程输入事件队列。
本步骤310对应于图2实施例的步骤210,此处不再赘述。
在步骤330中,云服务器的云应用端将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从远程输入事件队列中获取输入事件。
DirectInput接口默认会从基于系统消息队列分发的输入消息来维护的本地输入事件队列中获取输入事件,因此通常情况下DirectInput接口获取的是本地输入事件。对于图1所示的虚拟机方式而言,由于远程输入消息会被传递到系统消息队列中,因此远程输入事件会与本地输入事件一起分发至上述本地输入事件队列中。
与上述默认方式不同,本发明实施例对DirectInput接口中用于从本地输入事件队列中获取输入事件的函数进行修改,将其获取输入事件的操作重定向至步骤310更新的远程输入事件队列。这样一来,云服务器上的每个云应用端都维护各自的远程输入事件队列,并将上述函数获取输入事件的操作重定向至该远程输入事件队列,而避免从本地输入事件队列中获取输入事件。
在一个实施例中,上述DirectInput接口中用于从本地输入事件队列中获取输入事件的函数包括GetDeviceData(获取设备数据)函数,相应的,本步骤可通过HOOK的方式将GetDeviceData函数修改为从上述远程输入事件队列中获取输入事件。
在步骤350中,云服务器的云应用端对从远程输入事件队列获取的输入事件进行处理。
本步骤350对应于图2实施例的步骤250,此处不再赘述。
基于上述实施例提供的基于云的输入处理方法,通过将云应用端用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列,免于处理系统消息队列中的输入事件,也就无需受到系统全局输入事件的影响,从而在无需采用虚拟机的情况下实现了避免多个云应用端之间输入事件的相互干扰。相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
另外,通过设置DirectInput接口的非独占和后台工作模式后,新启动的云应用端进程不会影响正在使用DirectInput接口的云应用端进程,从而保证多个云应用端进程能够同时使用DirectInput接口而避免相互影响。
此外,通过HOOK技术就能在云应用端实现正常响应用户针对客户端的所有输入操作,无需修改客户端的实现逻辑或者管理多个虚拟机,使得更多的应用程序可以花费很小的代价云应用化,能够推动云游戏等云技术的发展。
图4是根据另一示例性实施例示出的一种基于云的输入处理方法的流程图。如图4所示,该基于云的输入处理方法可以由云服务器执行,可包括步骤405-450。
在步骤405中,在启动云服务器的云应用端时将DirectInput接口设置为非独占和后台工作模式。
本步骤405对应于图3实施例的步骤305,此处不再赘述。
在步骤407中,记录DirectInput接口中设置的输入事件数据格式。
不同的应用程序使用的数据格式可能不同,为了便于云应用端的消息处理逻辑后续能够识别来自客户端的输入事件从而进行处理,本步骤中对云应用端进程设置的输入事件数据格式进行记录。在一个实施例中,云应用端进程对输入事件数据格式的设置通过DirectInput接口的相应函数来完成,因此本步骤可记录DirectInput接口中设置的输入事件数据格式。
在一个实施例中,本步骤可通过HOOK的方式记录DirectInput接口中SetDataFormat(设置数据格式)函数所设置的输入事件数据格式。
在步骤410中,响应于用户在客户端的输入,云服务器的云应用端根据来自客户端的远程输入消息更新云应用端的远程输入事件队列,并基于记录的输入事件数据格式对远程输入事件队列中的输入事件进行封装。
本步骤410对应于图2实施例的步骤210,其中重复的内容此处不再赘述。
在图2实施例的步骤210基础上,本步骤还包括基于步骤407中记录的输入事件数据格式对远程输入事件队列中的输入事件进行重新封装,从而便于后续消息处理逻辑能够识别进而处理来自客户端的输入事件。
需要说明的是,此处的重新封装可以在云应用端收到远程输入消息之后并在更新远程输入事件队列之前进行,也可在更新远程输入事件队列之后并在对远程输入事件队列中的输入事件进行获取操作时进行,本发明的实施例并无限制,只要保证后续DirectInput接口获取到重新封装的输入事件即可。
在步骤430中,云服务器的云应用端将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从远程输入事件队列中获取输入事件。
本步骤430对应于图3实施例的步骤330,此处不再赘述。
在一个实施例中,上述DirectInput接口中用于从本地输入事件队列中获取输入事件的函数包括GetDeviceData函数,相应的,本步骤可通过HOOK的方式将GetDeviceData函数修改为从上述远程输入事件队列中获取键鼠事件。
对应于步骤410中重新封装后的输入事件,在一个实施例中,可通过将重新封装后的输入事件填充到GetDeviceData函数传入的相应参数中,来实现本步骤DirectInput接口对输入事件的获取。
在步骤450中,云服务器的云应用端对从远程输入事件队列获取的输入事件进行处理。
本步骤450对应于图2实施例的步骤250,此处不再赘述。
基于上述实施例提供的基于云的输入处理方法,通过将云应用端用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列,免于处理系统消息队列中的输入事件,也就无需受到系统全局输入事件的影响,从而在无需采用虚拟机的情况下实现了避免多个云应用端之间输入事件的相互干扰。相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
另外,通过设置DirectInput接口的非独占和后台工作模式后,新启动的云应用端进程不会影响正在使用DirectInput接口的云应用端进程,从而保证多个云应用端进程能够同时使用DirectInput接口而避免相互影响。
此外,通过记录DirectInput接口中设置的输入事件数据格式,并据此对来自客户端的输入事件进行重新封装,可保证后续云应用端进程的消息处理逻辑能够准确识别进而处理该输入事件,从而实现对用户设备侧输入操作的模拟回放。
并且,通过HOOK技术就能在云应用端实现正常响应用户针对客户端的所有输入操作,无需修改客户端的实现逻辑或者管理多个虚拟机,使得更多的应用程序可以花费很小的代价云应用化,能够推动云游戏等云技术的发展。
图5是根据一示例性实施例示出的应用图4所示方法的系统交互流程图。如图5所示,该流程通过客户端与云应用端之间的交互来完成,可包括步骤501-509。
在步骤501中,云应用端设置DirectInput接口的工作模式。
云应用端启动后,通过Hook DirectInput接口的SetCooperativeLevel函数,将其第二个参数修改为“DISCL_NONEXCLUSIVE|DISCL_BACKGROUND”,即非独占和后台工作模式。
在步骤502中,云应用端记录设置的输入事件数据格式。
通过Hook DirectInput接口的SetDataFormat函数,记录云应用端进程设置的输入事件数据格式。
在步骤503中,云应用端重定向DirectInput接口对输入事件的获取操作。
通过Hook DirectInput接口的GetDeviceData函数,将其由从本地输入事件队列获取输入事件修改为从远程输入事件队列中获取输入事件。
在步骤504中,云应用端绑定网络端口,等待客户端连接。
步骤501-504对应于云应用端的初始化操作。
在步骤505中,客户端进行初始化,客户端网络连接云应用端网络端口,实现网络连通。
本发明的实施例无需修改客户端的实现逻辑,因此其初始化和网络连接过程可沿用原有方式,此处不加以赘述。
网络连通后的客户端与云应用端可参见图6所示的系统架构。如图6所示,多个用户设备(未示出)上运行的多个客户端611,612…61n与云服务器62上运行的多个云应用端621,622…62n之间形成一对一的网络连接。在一个实施例中,可为这些网络连接分配不同的标识,从而实现来自不同客户端的输入事件可基于该标识传送至相应的云应用端中。
在步骤506中,客户端获取基于用户输入操作产生的输入事件后,通过网络发送到云应用端。
在步骤507中,云应用端收到封装的输入消息之后,对消息进行解析,并存储到远程输入事件队列中。
在步骤508中,云应用端通过DirectInput接口获取远程输入事件队列中的输入事件。
云应用端进程在调用DirectInput接口的GetDeviceData函数时,发现远程输入事件队列中有数据,取出输入事件后按照记录的数据格式进行封装,填充到GetDeviceData函数传入的参数中。
在步骤509中,云应用端的消息处理逻辑对输入事件进行处理并将处理后输出的图象传送至客户端。
基于上述实施例提供的系统交互流程可见,通过将云应用端DirectInput接口获取输入事件的操作重定向至远程输入事件队列,免于处理系统消息队列中的输入事件,也就无需受到系统全局输入事件的影响,从而在无需采用虚拟机的情况下实现了避免多个云应用端之间输入事件的相互干扰。相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
另外,通过设置DirectInput接口的非独占和后台工作模式后,新启动的云应用端进程不会影响正在使用DirectInput接口的云应用端进程,从而保证多个云应用端进程能够同时使用DirectInput接口而避免相互影响。
此外,通过记录DirectInput接口中设置的输入事件数据格式,并据此对来自客户端的输入事件进行重新封装,可保证后续云应用端进程的消息处理逻辑能够准确识别进而处理该输入事件,从而实现对用户设备侧输入操作的模拟回放。
并且,通过HOOK技术就能在云应用端实现正常响应用户针对客户端的所有输入操作,无需修改客户端的实现逻辑或者管理多个虚拟机,使得更多的应用程序可以花费很小的代价云应用化,能够推动云游戏等云技术的发展。
下述为本发明装置实施例,可以用于执行本发明上述基于云的输入处理方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明基于云的输入处理方法实施例。
图7是根据一示例性实施例示出的一种基于云的输入处理装置的框图。该基于云的输入处理装置,如图7所示,包括但不限于:队列更新模块710、事件获取模块730和事件处理模块750。
队列更新模块710设置为响应于用户在客户端的输入,根据来自客户端的远程输入消息更新云应用端的远程输入事件队列。
事件获取模块730设置为将用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列。
事件处理模块750设置为对从远程输入事件队列获取的输入事件进行处理。
在一个实施例中,事件获取模块730设置为通过HOOK的方式将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从上述远程输入事件队列中获取输入事件。
在一个实施例中,事件获取模块730设置为通过HOOK的方式将DirectInput接口中的GetDeviceData函数修改为从上述远程输入事件队列中获取输入事件。
基于上述实施例提供的基于云的输入处理装置,通过将云应用端用于获取输入事件的API获取输入事件的操作重定向至远程输入事件队列,免于处理系统消息队列中的输入事件,也就无需受到系统全局输入事件的影响,从而在无需采用虚拟机的情况下实现了避免多个云应用端之间输入事件的相互干扰。相较于虚拟机的实现方式,能够并发处理更多云应用端的输入事件,极大提高了云服务器的资源利用率。
另外,通过HOOK技术就能在云应用端实现正常响应用户针对客户端的所有输入操作,无需修改客户端的实现逻辑或者管理多个虚拟机,使得更多的应用程序可以花费很小的代价云应用化,能够推动云游戏等云技术的发展。
图8是根据另一示例性实施例示出的一种基于云的输入处理装置的框图。如图8所示,在图7所示装置实施例的基础上,该基于云的输入处理装置还包括但不限于:接口设置模块720、格式记录模块740和消息封装模块760。
接口设置模块720用于在启动云应用端时将DirectInput接口设置为非独占和后台工作模式。
格式记录模块740用于通过HOOK的方式记录DirectInput接口中SetDataFormat函数所设置的输入事件数据格式。
消息封装模块760用于根据格式记录模块740记录的输入事件数据格式对远程输入事件队列中的输入事件进行封装。
在一个实施例中,接口设置模块720设置为通过HOOK的方式将DirectInput接口中SetCooperativeLevel函数的第二个参数修改为DISCL_NONEXCLUSIVE|DISCL_BACKGROUND,即非独占模式和后台模式。
以下结合上述方法实施例对本实施例中基于云的输入处理装置的工作流程加以描述。
云应用端启动后,接口设置模块720通过Hook DirectInput接口的SetCooperativeLevel函数,将其第二个参数修改为DISCL_NONEXCLUSIVE|DISCL_BACKGROUND,即非独占和后台工作模式。格式记录模块740通过Hook DirectInput接口的SetDataFormat函数,记录云应用端进程设置的输入事件数据格式。事件获取模块730通过Hook DirectInput接口的GetDeviceData函数,将其由从本地输入事件队列801获取输入事件修改为从远程输入事件队列802中获取输入事件。
云应用端在收到来自客户端的远程输入消息之后,队列更新模块710对消息进行解析,并存储到远程输入事件队列802中。事件获取模块730从远程输入事件队列802获取输入事件可通过如下方式进行:云应用端进程在调用DirectInput接口的GetDeviceData函数时,发现远程输入事件队列中有数据,取出输入事件后按照记录的数据格式进行封装,填充到GetDeviceData函数传入的参数中。
最后,事件处理模块750通过云应用端的消息处理逻辑对输入事件进行处理并将处理后输出的图象传送至客户端。
基于上述实施例提供的基于云的输入处理装置,通过设置DirectInput接口的非独占和后台工作模式后,新启动的云应用端进程不会影响正在使用DirectInput接口的云应用端进程,从而保证多个云应用端进程能够同时使用DirectInput接口而避免相互影响。
此外,通过记录DirectInput接口中设置的输入事件数据格式,并据此对来自客户端的输入事件进行重新封装,可保证后续云应用端进程的消息处理逻辑能够准确识别进而处理该输入事件,从而实现对用户设备侧输入操作的模拟回放。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。
图9是根据一示例性实施例示出的一种云服务器的框图。该云服务器900,如图9所示,包括但不限于如上任一实施例所述的基于云的输入处理装置910。该云服务器与运行客户端的用户设备通信,用于运行云应用端,通过基于云的输入处理装置910接收客户端发送的输入事件、并将云应用端响应输入事件产生的输出图像发送至客户端。
与图6所示云服务器62上运行有多个云应用端对应,此处图9所示的云服务器900上可包括多个基于云的输入处理装置910,为便于图示简洁此处没有示出。
图10示出了可以应用本发明实施例的基于云的输入处理方法或基于云的输入处理装置的示例性系统架构1000的示意图。
如图10所示,系统架构1000可以包括用户设备1001、1002、1003中的一种或多种,网络1004和云服务器1005。网络1004用以在用户设备1001、1002、1003和云服务器1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
应该理解,图10中的用户设备、网络和云服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的用户设备、网络和云服务器。比如云服务器1005可以是多个云服务器组成的云服务器集群等。
用户可以使用用户设备1001、1002、1003通过网络1004与云服务器1005交互,以接收或发送消息等。用户设备1001、1002、1003可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。
云服务器1005可以是提供各种服务的云服务器。例如用户利用用户设备1003(也可以是用户设备1001或1002)运行云应用的客户端,在操作中基于用户输入产生的输入事件通过网络1004发送到云服务器1005。云服务器1005上运行云应用的真实程序(云应用端),通过接收来自用户设备1003的输入事件实现对用户输入的模拟回放,并将程序的运行画面回传至用户设备1003上进行显示。
又如用户利用用户设备1003(也可以是用户设备1001或1002)运行云游戏的客户端,在操作中基于用户输入产生的输入事件通过网络1004发送到云服务器1005。云服务器1005上运行云游戏的真实程序,通过接收来自用户设备1003的输入事件实现对用户输入的模拟回放,并将游戏的运行画面回传至用户设备1003上进行显示。
需要说明的是,本发明实施例所提供的基于云的输入处理方法一般由云服务器1005执行,相应地,基于云的输入处理装置一般设置于云服务器1005中。
在示例性实施例中,本发明还提供一种电子设备,执行图2、图3和图4任一所示的基于云的输入处理方法的全部或者部分步骤。所述装置包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行:响应于用户在客户端的输入,根据来自所述客户端的远程输入消息更新云应用端的远程输入事件队列;以及将用于获取输入事件的应用程序接口API获取输入事件的操作重定向至所述远程输入事件队列,并对从所述远程输入事件队列获取的输入事件进行处理。
图11示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图11示出的电子设备的计算机系统1100仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM1103中,还存储有系统操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的装置中限定的各种功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
在示例性实施例中,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个计算机程序,当上述一个或者多个计算机程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的方法。例如,所述的电子设备可以实现如图2、图3或图4所示的各个步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种基于云的输入处理方法,其特征在于,所述方法包括:
云应用端设置DirectInput接口的工作模式,所述云应用端启动后通过HookDirectInput接口的SetCooperativeLevel函数,将所述DirectInput接口设置为非独占和后台工作模式;
云应用端记录设置的输入事件数据格式;
所述云应用端重定向DirectInput接口对输入事件的获取操作;
所述云应用端绑定网络端口,等待客户端连接;
响应于用户在客户端的输入,云服务器的云应用端根据来自所述客户端的远程输入消息更新所述云应用端的远程输入事件队列;以及
所述云服务器的云应用端将用于获取输入事件的DirectInput接口获取输入事件的操作重定向至所述远程输入事件队列;
从所述远程输入事件队列获取来自所述客户端的输入事件,所述云服务器的消息处理逻辑对所述输入事件进行处理。
2.根据权利要求1所述的方法,其特征在于,所述的将用于获取输入事件的DirectInput接口获取输入事件的操作重定向至所述远程输入事件队列,包括:
通过钩子注入HOOK的方式将直接输入DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从所述远程输入事件队列中获取输入事件。
3.根据权利要求2所述的方法,其特征在于,所述的通过HOOK的方式将DirectInput接口中用于从本地输入事件队列中获取输入事件的函数修改为从所述远程输入事件队列中获取输入事件,包括:
通过HOOK的方式将所述DirectInput接口中获取设备数据GetDeviceData函数修改为从所述远程输入事件队列中获取输入事件。
4.根据权利要求1所述的方法,其特征在于,所述的将所述DirectInput接口设置为非独占和后台工作模式,包括:
通过HOOK的方式将所述DirectInput接口中设置协作等级SetCooperative-Level函数的参数修改为非独占模式DISCL_NONEXCLUSIVE及后台模式DISCL_BACKGROUND。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述云应用端设置的输入事件数据格式对所述远程输入事件队列中的输入事件进行封装。
6.根据权利要求5所述的方法,其特征在于,所述用于获取输入事件的API包括DirectInput接口;在所述的根据所述云应用端设置的输入事件数据格式对所述远程输入事件队列中的输入事件进行封装之前,所述方法还包括:
通过HOOK的方式记录所述DirectInput接口中设置数据格式SetDataFormat函数所设置的输入事件数据格式。
7.一种基于云的输入处理装置,其特征在于,云应用端设置DirectInput接口的工作模式,所述云应用端启动后通过Hook DirectInput接口的SetCooperativeLevel函数,将所述DirectInput接口设置为非独占和后台工作模式;云应用端记录设置的输入事件数据格式;所述云应用端重定向DirectInput接口对输入事件的获取操作;所述云应用端绑定网络端口,等待客户端连接;
所述装置包括:
队列更新模块,设置为响应于用户在客户端的输入,云服务器的云应用端根据来自所述客户端的远程输入消息更新所述云应用端的远程输入事件队列;
事件获取模块,设置为将用于获取输入事件的应用程序接口API获取输入事件的操作重定向至所述远程输入事件队列;以及
事件处理模块,设置为从所述远程输入事件队列获取来自所述客户端的输入事件,所述云服务器的消息处理逻辑对所述输入事件进行处理。
8.一种云服务器,与运行客户端的用户设备通信,用于运行云应用端、接收所述客户端发送的输入事件、并将所述云应用端响应所述输入事件产生的输出图像发送至所述客户端,其特征在于,所述云服务器包括根据权利要求7所述的基于云的输入处理装置。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至6中任一项所述的基于云的输入处理方法。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据权利要求1至6中任一项所述的基于云的输入处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487366.6A CN108052377B (zh) | 2017-12-29 | 2017-12-29 | 基于云的输入处理方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487366.6A CN108052377B (zh) | 2017-12-29 | 2017-12-29 | 基于云的输入处理方法、装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052377A CN108052377A (zh) | 2018-05-18 |
CN108052377B true CN108052377B (zh) | 2022-02-08 |
Family
ID=62129761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711487366.6A Active CN108052377B (zh) | 2017-12-29 | 2017-12-29 | 基于云的输入处理方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052377B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109646944B (zh) | 2018-12-20 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 控制信息处理方法、装置、电子设备及存储介质 |
CN113750517B (zh) * | 2020-11-30 | 2024-04-30 | 上海达龙信息科技有限公司 | 键盘操作数据传输方法及装置、键盘操作执行方法及装置 |
CN114095464B (zh) * | 2021-11-16 | 2023-08-08 | 成都知道创宇信息技术有限公司 | 即时消息实现方法和系统 |
CN114840351A (zh) * | 2022-03-18 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种按键事件处理方法、装置、控制设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521022A (zh) * | 2010-10-27 | 2012-06-27 | 微软公司 | 在无状态云计算环境中操作的有状态的应用程序 |
CN104040522A (zh) * | 2011-12-22 | 2014-09-10 | 惠普发展公司,有限责任合伙企业 | 使用应用元数据和客户端更新使能远程受管应用的执行 |
CN104956358A (zh) * | 2013-01-31 | 2015-09-30 | 惠普发展公司,有限责任合伙企业 | 远程客户端应用 |
CN105577828A (zh) * | 2016-01-29 | 2016-05-11 | 腾讯科技(深圳)有限公司 | 一种远程重定向方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213881B1 (en) * | 2014-06-13 | 2015-12-15 | The Code Corporation | Providing operating instructions for a barcode reader from a server |
CN105025022B (zh) * | 2015-07-13 | 2018-03-06 | 北京视博云科技有限公司 | 一种远程代控方法及系统 |
US10936385B2 (en) * | 2017-05-05 | 2021-03-02 | International Business Machines Corporation | Running kernel dependent applications inside a container |
-
2017
- 2017-12-29 CN CN201711487366.6A patent/CN108052377B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521022A (zh) * | 2010-10-27 | 2012-06-27 | 微软公司 | 在无状态云计算环境中操作的有状态的应用程序 |
CN104040522A (zh) * | 2011-12-22 | 2014-09-10 | 惠普发展公司,有限责任合伙企业 | 使用应用元数据和客户端更新使能远程受管应用的执行 |
CN104956358A (zh) * | 2013-01-31 | 2015-09-30 | 惠普发展公司,有限责任合伙企业 | 远程客户端应用 |
CN105577828A (zh) * | 2016-01-29 | 2016-05-11 | 腾讯科技(深圳)有限公司 | 一种远程重定向方法和装置 |
Non-Patent Citations (1)
Title |
---|
DirectX 3D游戏引擎制作与实现;吴应嘉,;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》;20160315(第03期);I138-5643 * |
Also Published As
Publication number | Publication date |
---|---|
CN108052377A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052377B (zh) | 基于云的输入处理方法、装置、服务器和存储介质 | |
CN108536468A (zh) | 配置文件获取方法、提供方法、装置及设备 | |
US10353718B2 (en) | Providing access to a remote application via a web client | |
CN110795195A (zh) | 一种网页渲染方法、装置、电子设备及存储介质 | |
CN107342083B (zh) | 用于提供语音服务的方法和装置 | |
US9678814B2 (en) | Implementing a java method | |
CN111722885B (zh) | 程序运行方法、装置以及电子设备 | |
EP4119207A1 (en) | Vibration control method and apparatus, and electronic device and computer-readable storage medium | |
WO2023077951A1 (zh) | 数据渲染方法及装置 | |
CN108549586B (zh) | 信息处理方法和装置 | |
CN110928706B (zh) | 小程序交互方法、装置、电子设备及存储介质 | |
US9614900B1 (en) | Multi-process architecture for a split browser | |
CN110618768B (zh) | 信息呈现方法和装置 | |
CN109840109B (zh) | 用于生成软件开发工具包的方法和装置 | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
CN112015383A (zh) | 一种登录方法和装置 | |
CN113254825A (zh) | 页面生成的方法、装置、电子设备和存储介质 | |
CN105577828A (zh) | 一种远程重定向方法和装置 | |
CN111382039A (zh) | 上报用户行为事件的方法、装置、电子设备及存储介质 | |
CN110795328A (zh) | 一种接口测试方法和装置 | |
CN112579447A (zh) | 一种浏览器测试方法和装置 | |
CN110324432B (zh) | 应用于终端的数据处理方法、装置、介质和计算设备 | |
CN112218144A (zh) | 投屏控制方法、装置、电子设备以及计算机可读介质 | |
CN112764746A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113893525A (zh) | 云游戏运行方法、装置、电子设备及计算机可读介质 |
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 |