Handling application events occurring on inactive or disconnected virtual desktops
Techniques are described for handling application events occurring in inactive or disconnected virtual desktop sessions. These events may be any specified application events, such as videoconferencing calls, instant messaging (IM) messages, or other communication events. When an application event is detected in the virtual desktop that is idle, inactive or disconnected, a notification is sent from the virtual desktop to a connection server, which forwards the notification to the client device, where the notification about the event is displayed to the user. In response to the event, the user may be provided with an option to reestablish the connection to the virtual desktop or to launch the application in which the event was detected as a seamless window on the client device.
1 . A method for handling events occurring in inactive or disconnected virtual desktop sessions, the method comprising:
establishing a remoting session between a virtual desktop client operating on a client device and a virtual desktop agent operating on a host server, the remoting session configured to access a virtual desktop running on the host server over a remote display protocol;
receiving, by the virtual desktop agent, configuration data identifying an application executing in the virtual desktop and one or more application events of the application to be monitored on the virtual desktop;
monitoring for occurrence of the one or more application events on the virtual desktop;
detecting an occurrence of the one or more application events on the virtual desktop;
determining whether the remoting session to access the virtual desktop is active or inactive;
in response to determining that the remoting session to access the virtual desktop is active, transmitting, via a virtual protocol channel of the remote display protocol, a notification to the virtual desktop client indicating that the one or more application events are occurring, wherein the virtual desktop client displays the notification; and
in response to determining that the remoting session is inactive,
maintaining, during inactivity of the remoting session, a first persistent connection between the virtual desktop agent and a connection server and a second persistent connection between the virtual desktop client and the connection server, independent of the remoting session;
sending, by the virtual desktop agent via the first persistent connection, a message to the connection server indicating occurrence of the one or more application events, wherein the connection server, in response to the message, instructs the client device via the second persistent connection to display a first option to reestablish the remoting session by the virtual desktop client and a second option to launch the application as a seamless window on the client device;
receiving an indication of a selection of the first option or the second option;
in response to receiving the indication of the selection of the first option, causing the remoting session to be reestablished between the virtual desktop agent and the virtual desktop client; and
in response to receiving the indication of the selection of the second option, causing the virtual desktop agent to launch the application on the virtual desktop and instructing the virtual desktop client to display the application executing on the virtual desktop as a seamless application window on the client device, wherein the seamless application window displays only a user interface of the application in which the one or more application events were detected and hides a remainder of a user interface of the virtual desktop that is executing the application.
2 . The method of claim 1 , wherein the one or more application events include an incoming communication in a videoconferencing application or instant messaging (IM) service.
3 . The method of claim 1 , wherein the connection server is configured to establish the remoting session between the virtual desktop client and the virtual desktop agent.
4 . The method of claim 1 , wherein during a time period while the remoting session is inactive, the virtual desktop client establishes a second remoting session to access a second virtual desktop.
5 . The method of claim 4 , wherein the notification is displayed on the client device while the virtual desktop client is accessing the second virtual desktop.
6 . A computing system, comprising:
at least one processor; and
memory including instructions that, when executed by the at least one processor, cause the computing system to perform the steps of:
establishing a remoting session between a virtual desktop client operating on a client device and a virtual desktop agent operating on a host server, the remoting session configured to access a virtual desktop running on the host server over a remote display protocol;
receiving, by the virtual desktop agent, configuration data identifying an application executing in the virtual desktop and one or more application events of the application to be monitored on the virtual desktop;
monitoring for occurrence of the one or more application events on the virtual desktop;
detecting an occurrence of the one or more application events on the virtual desktop;
determining whether the remoting session to access the virtual desktop is active or inactive;
in response to determining that the remoting session to access the virtual desktop is active, transmitting, via a virtual protocol channel of the remote display protocol, a notification to the virtual desktop client indicating that the one or more application events are occurring, wherein the virtual desktop client displays the notification; and
in response to determining that the remoting session is inactive,
maintaining, during inactivity of the remoting session, a first persistent connection between the virtual desktop agent and a connection server and a second persistent connection between the virtual desktop client and the connection server, independent of the remoting session;
sending, by the virtual desktop agent via the first persistent connection, a message to the connection server, wherein the connection server, in response to the message, instructs the client device via the second persistent connection to display a first option to reestablish the remoting session by the virtual desktop client and a second option to launch the application as a seamless window on the client device;
receiving an indication of a selection of the first option or the second option;
in response to receiving the indication of the selection of the first option, causing the remoting session to be reestablished between the virtual desktop agent and the virtual desktop client; and
in response to receiving the indication of the selection of the second option, causing the virtual desktop agent to launch the application on the virtual desktop and instructing the virtual desktop client to display the application executing on the virtual desktop as a seamless application window on the client device, wherein the seamless application window displays only a user interface of the application in which the one or more application events were detected and hides a remainder of a user interface of the virtual desktop that is executing the application.
7 . The computing system of claim 6 , wherein the one or more application events include an incoming communication in a videoconferencing application or instant messaging (IM) service.
8 . The computing system of claim 6 , wherein the connection server is configured to establish the remoting session between the virtual desktop client and the virtual desktop agent.
9 . The computing system of claim 6 , wherein during a time period while the remoting session is inactive, the virtual desktop client establishes a second remoting session to access a second virtual desktop.
10 . The computing system of claim 9 , wherein the notification is displayed on the client device while the virtual desktop client is accessing the second virtual desktop.
11 . A non-transitory computer readable storage medium comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:
establishing a remoting session between a virtual desktop client operating on a client device and a virtual desktop agent operating on a host server, the remoting session configured to access a virtual desktop running on the host server over a remote display protocol;
receiving, by the virtual desktop agent, configuration data identifying an application executing in the virtual desktop and one or more application events of the application to be monitored on the virtual desktop;
monitoring for occurrence of the one or more application events on the virtual desktop;
detecting an occurrence of the one or more application events on the virtual desktop;
determining whether the remoting session to access the virtual desktop is active or inactive;
in response to determining that the remoting session to access the virtual desktop is active, transmitting, via a virtual protocol channel of the remote display protocol, a notification to the virtual desktop client indicating that the one or more application events are occurring, wherein the virtual desktop client displays the notification; and
in response to determining that the remoting session is inactive,
maintaining, during inactivity of the remoting session, a first persistent connection between the virtual desktop agent and a connection server and a second persistent connection between the virtual desktop client and the connection server, independent of the remoting session;
sending, by the virtual desktop agent via the first persistent connection, a message to the connection server, wherein the connection server, in response to the message, instructs the client device via the second persistent connection to display a first option to reestablish the remoting session by the virtual desktop client and a second option to launch the application as a seamless window on the client device;
receiving an indication of a selection of the first option or the second option;
in response to receiving the indication of the selection of the first option, causing the remoting session to be reestablished between the virtual desktop agent and the virtual desktop client; and
in response to receiving the indication of the selection of the second option, causing the virtual desktop agent to launch the application on the virtual desktop and instructing the virtual desktop client to display the application executing on the virtual desktop as a seamless application window on the client device, wherein the seamless application window displays only a user interface of the application in which the one or more application events were detected and hides a remainder of a user interface of the virtual desktop that is executing the application.
12 . The non-transitory computer readable storage medium of claim 11 , wherein the one or more application events include an incoming communication in a videoconferencing application or instant messaging (IM) service.
13 . The non-transitory computer readable storage medium of claim 11 , wherein the connection server is configured to establish the remoting session between the virtual desktop client and the virtual desktop agent.
14 . The non-transitory computer readable storage medium of claim 11 , wherein during a time period while the remoting session is inactive, the virtual desktop client establishes a second remoting session to access a second virtual desktop.
15 . The method of claim 1 , wherein monitoring for the occurrence of the one or more application events is performed by an application tracker that is implemented as a dynamic link library (DLL) that is injected into the application by a DLL injection driver.
16 . The method of claim 1 , wherein monitoring for the one or more application events is performed by an application event tracker executing within a guest operating system of the virtual desktop, the application event tracker being configured to detect the one or more application events by intercepting application-level messaging events generated by the application and forwarding event data to an event handler of the virtual desktop agent that communicates with the connection server.
17 . The computing system of claim 6 , wherein monitoring for the one or more application events is performed by an application event tracker executing within a guest operating system of the virtual desktop, the application event tracker being configured to detect the one or more application events by intercepting application-level messaging events generated by the application and forwarding event data to an event handler of the virtual desktop agent that communicates with the connection server.
18 . The non-transitory computer readable storage medium of claim 11 , wherein monitoring for the one or more application events is performed by an application event tracker executing within a guest operating system of the virtual desktop, the application event tracker being configured to detect the one or more application events by intercepting application-level messaging events generated by the application and forwarding event data to an event handler of the virtual desktop agent that communicates with the connection server.