IP Library › Granted Patent US 11,138,026
Granted Patent B2
US 11,138,026 · App. 16/403,102 · Granted Oct 5, 2021

Systems and methods for remote computing session display based upon user input event prioritization

Inventor: Georgy Momchilov (Parkland, FL)
Assignee: CITRIX SYSTEMS, INC.
G06F9/452G06F3/0488G06F9/3877G06F9/45558G06F9/544H04L1/004H04L1/0057H04L47/27H04L47/624H04L65/80H04L67/08H04L67/14H04L67/38H04L67/42G06F3/0484G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,138,026
App. No.
16/403,102
Granted
Oct 5, 2021
Kind
B2
Abstract

A computing system may include a server configured to host virtual computing sessions, and a client device. The client device may be configured to remotely access a virtual computing session from the server, and receive user input data associated with the virtual computing session and classify the data into first (higher priority) and second (lower priority) data packets. The client device may also be configured to send the first data packets to the server via a first virtual channel, and send the second data packets to the server via a second virtual channel having a higher packet loss rate associated therewith than the first virtual channel. The server may be configured to assemble the second data packets to reconstruct and inject the user input data into the virtual computing session based upon the first data packets.

Claims (45)

1. A computing system comprising:

a server configured to host virtual computing sessions; and

a client device configured to

remotely access a virtual computing session from the server,

receive user input data associated with the virtual computing session including a group of data packets,

divide the group of data packets into first and second data packets, where the first data packets are critical data packets and the second data packets are non-critical data packets,

send the first data packets to the server via a reliable virtual channel, and

send the second data packets to the server via a lossy virtual channel having a higher packet loss rate associated therewith than the reliable virtual channel;

wherein the server is configured to assemble the first and second data packets to reconstruct and inject the user input data into the virtual computing session with reference to a first packet and a last packet of the first data packets, the first and last packets being indicative of the start and end of the user input data.

2. The computing system of claim 1 wherein the client device has a keyboard associated therewith, and wherein the first data packets correspond to keyboard events input via the keyboard.

3. The computing system of claim 1 wherein the client device has a touch screen associated therewith, and wherein the first data packets correspond to touch-up and touch-down events input via the touch screen; and wherein the second data packets correspond to touch-move events input via the touch screen.

4. The computing system of claim 1 wherein the client device has a mouse associated therewith, and wherein the first data packets correspond to mouse-button-up and mouse-button-down events input via the mouse; and wherein the second data packets correspond to mouse-drag and mouse-wheel events input via the mouse.

5. The computing system of claim 1 wherein the client device has an electronic pen associated therewith, and wherein the first data packets correspond to pen-up and pen-down events input via the electronic pen; and wherein the second data packets correspond to pen-drag events input via the electronic pen.

6. The computing system of claim 1 wherein the client device is further configured to send at least some of the first data packets via the lossy virtual channel.

7. The computing system of claim 1 wherein the client device is further configured to apply forward error correction (FEC) to the first and second data packets responsive to a packet loss greater than a threshold level.

8. The computing system of claim 7 wherein the client device is configured to apply FEC to the first and second data packets after a delay period.

9. The computing system of claim 7 wherein the client device is further configured to selectively change a level of FEC applied to at least one of the first and second data packets based upon changes in data packet loss.

10. A client device comprising:

a memory and a processor cooperating with the memory to

remotely access a virtual computing session from a server,

receive user input data associated with the virtual computing session including a group of data packets,

divide the group of data packets into first and second data packets, where the first data packets are critical data packets and the second data packets are non-critical data packets,

send the first data packets to the server via a reliable virtual channel, and

send the second data packets to the server via a lossy virtual channel having a higher packet loss rate associated therewith than the reliable virtual channel for the server to assemble the first and second data packets to reconstruct and inject the user input data into the virtual computing session with reference to a first packet and a last packet of the first data packets, the first and last packets being indicative of the start and end of the user input data.

11. The client device of claim 10 wherein the first data packets correspond to keyboard events input via a keyboard.

12. The client device of claim 10 wherein the first data packets correspond to touch-up and touch-down events input via a touch screen; and wherein the second data packets correspond to touch-move events input via the touch screen.

13. The client device of claim 10 wherein the first data packets correspond to mouse-button-up and mouse-button-down events input via a mouse; and wherein the second data packets correspond to mouse-drag and mouse-wheel events input via the mouse.

14. The client device of claim 10 wherein the first data packets correspond to pen-up and pen-down events input via an electronic pen; and wherein the second data packets correspond to pen-drag events input via the electronic pen.

15. A method comprising:

remotely accessing a virtual computing session at a client device from a server;

receiving user input data at the client device associated with the virtual computing session including a group of data packets,

dividing the group of data packets into first and second data packets, where the first data packets are critical data packets and the second data packets are non-critical data packets;

sending the first data packets from the client device to the server via a reliable virtual channel, and

sending the second data packets from the client device to the server via a lossy virtual channel having a higher packet loss rate associated therewith than the reliable virtual channel to enable the server to assemble the first and second data packets to reconstruct and inject the user input data into the virtual computing session with reference to a first packet and a last packet of the first data packets, the first and last packets being indicative of the start and end of the user input data.

16. The method of claim 15 wherein the first data packets correspond to keyboard events input via a keyboard.

17. The method of claim 15 wherein the first data packets correspond to touch-up and touch-down events input via a touch screen; and wherein the second data packets correspond to touch-move events input via the touch screen.

18. The method of claim 15 wherein the first data packets correspond to mouse-button-up and mouse-button-down events input via a mouse; and wherein the second data packets correspond to mouse-drag or mouse-wheel events input via the mouse.

19. The method of claim 15 wherein the first data packets correspond to pen-up and pen-down events input via an electronic pen; and wherein the second data packets correspond to pen-drag events input via the electronic pen.

20. A computing device comprising:

a memory and a processor cooperating with the memory to

host virtual computing sessions to be remotely accessed by a client device, the client device being configured to receive user input data associated with the virtual computing session including a group of data packets and divide the group of data packets into first and second data packets, wherein the first data packets are critical data packets and the second data packets are non-critical data packets,

receive the first data packets from the client device via a reliable virtual channel,

receive the second data packets from the client device via a lossy virtual channel having a higher packet loss rate associated therewith than the reliable virtual channel, and

assemble the first and second data packets to reconstruct and inject the user input data into the virtual computing session with reference to a first packet and a last packet of the first data packets, the first and last packets being indicative of the start and end of the user input data.

21. The computing device of claim 20 wherein the processor is further configured to also receive at least some of the first data packets from the client device via the lossy virtual channel.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2019
From: MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 049091/0229 →
Continuity (2)
Provisional Application 62667072 · May 4, 2018
Related Publication 20190342426A1 · Nov 7, 2019