IP Library Granted Patent US 10,382,521
Granted Patent B2
US 10,382,521 · App. 14/968,486 · Granted Aug 13, 2019

Gateway that enables a browser-based application to communicate with a server-side application using a non-browser-compatible protocol

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 10,382,521
App. No.
14/968,486
Granted
Aug 13, 2019
Kind
B2
Abstract

A generic client engine can associate a transcoder process with a requested server-side application so that the transcoder process can act as an intermediary between the browser-based application and the server-side application. The transcoder process can be configured to communicate with the browser-based application using a browser-supported protocol. The transcoder process can be further configured to transcode between the browser-supported protocol and a protocol employed by the server-side application. In cases where a gateway service provides access to the server-side application, the transcoder process can also act as an intermediary between the browser-based application and the gateway service to transcode between the browser-supported protocol and a gateway protocol. In some cases, the transcoder process, and possibly the gateway service, can alternatively be located on the client device that hosts the browser-based application.

Claims (46)

1. A method, implemented by a server, of enabling a browser-based application that is executed within a browser on a client device to employ a non-browser-supported application layer protocol to communicate with an application hosted on the server, the method comprising:

receiving, from the browser-based application that is executed within a browser on a client device and is therefore limited to using browser-supported application layer protocols to communicate over a network, a request to access the application hosted on the server;

binding an instance of a transcoder process to the application hosted on the server, the transcoder process being configured to communicate with the browser-based application that is executed within the browser on the client device using a browser-supported application layer protocol;

receiving, by the transcoder process, one or more packets sent by the browser-based application using the browser-supported application layer protocol, the one or more packets encapsulating data that the browser-based application formatted in accordance with the non-browser supported application layer protocol;

extracting, by the transcoder process, the data formatted in accordance with the non-browser-supported application layer protocol from the one or more packets that were sent by the browser-based application that is executed within the browser on the client device and received by the transcoder process using the browser-supported application layer protocol; and

submitting the data formatted in accordance with the non-browser-supported application layer protocol to the application hosted on the server.

2. The method of claim 1 , wherein submitting the data to the application comprises intercepting one or more function calls made by the application to an operating-system provided transport layer API.

3. The method of claim 1 , wherein the data is submitted to the application via a transport layer socket.

4. The method of claim 1 , further comprising:

receiving, by the transcoder process, second data from the application hosted on the server, the second data being formatted in accordance with the non-browser-supported application layer protocol;

generating second one or more packets in accordance with the browser-supported application layer protocol and including the second data within the second one or more packets; and

sending the second one or more packets to the browser-based application that is executed within the browser on the client device.

5. The method of claim 4 , wherein receiving the second data comprises intercepting one or more function calls made by the application to an operating-system provided transport layer API.

6. The method of claim 4 , wherein the second data is received from the application via a transport layer socket.

7. The method of claim 1 , wherein the non-browser-supported application layer protocol is a remote display protocol.

8. The method of claim 7 , wherein the application is an RDP server and the browser-based application is an RDP client.

9. The method of claim 7 , wherein the second data comprises display data.

10. The method of claim 1 , wherein the browser-supported application layer protocol is the WebSocket protocol.

11. The method of claim 1 , wherein the transcoder process is configured to communicate with the browser-based application over a main channel and one or more additional channels that are related to the main channel.

12. The method of claim 1 , wherein the request to access the application is received via a proxy.

13. A method, implemented by a first server, of enabling a browser-based application that is executed within a browser on a client device to employ a non-browser-supported application layer protocol to communicate with an application hosted on a second server for which the first server functions as a gateway, the method comprising:

receiving, from the browser-based application that is executed within a browser on a client device and is therefore limited to using browser-supported application layer protocols to communicate over a network, a request to access the application hosted on the second server;

binding an instance of a transcoder process to a gateway service hosted on the first server, the transcoder process being configured to communicate with the browser-based application that is executed within the browser on the client device using a browser-supported application layer protocol;

receiving, by the transcoder process and from the browser-based application, one or more packets sent by the browser-based application using the browser-supported application layer protocol, the one or more packets encapsulating data that the browser-based application formatted in accordance with the non-browser supported application layer protocol;

for each of the one or more packets:

extracting, from the packet that was sent by the browser-based application that is executed within the browser on the client device and received by the transcoder process using the browser-supported application layer protocol, the data formatted in accordance with the non-browser-supported application layer protocol;

appending one or more headers to the data, the one or more headers corresponding to a gateway protocol employed by the gateway service, the one or more headers being configured to cause the gateway service to forward one or more packets containing the data to the application hosted on the second server; and

submitting the data with the appended one or more headers to the gateway service.

14. The method of claim 13 , further comprising:

receiving, by the transcoder process and from the gateway service, one or more packets that are formatted in accordance with the gateway protocol and that include in their payload data formatted in accordance with the non-browser-supported application layer protocol;

extracting the data from the one or more packets;

generating second one or more packets in accordance with the browser-supported application layer protocol and including the data within the second one or more packets; and

sending the second one or more packets to the browser-based application that is executed within the browser on the client device.

15. The method of claim 14 , wherein the one or more packets are received from the gateway service via a transport layer socket.

16. The method of claim 13 , wherein the data with the appended one or more headers is submitted to the gateway service via a transport layer socket.

17. The method of claim 13 , wherein the browser-supported application layer protocol is the WebSocket protocol.

18. The method of claim 13 , wherein the transcoder process appends the one or more headers based on information contained in the browser-based application's request to access the application.

19. One or more computer storage media storing computer-executable instructions which when executed in a server environment implement a method for enabling a browser-based application that is executed within a browser on a client device to communicate with a remote display server that employs a remote display protocol for communicating over a network, the method comprising:

receiving, from the browser-based application that is executed within a browser on a client device and is therefore limited to using browser-supported application layer protocols to communicate over a network, a request to access the remote display server;

in response to the request, binding an instance of a transcoder process to the remote display server, the transcoder process being configured to communicate with the browser-based application that is executed within the browser on the client device using a browser-supported application layer protocol;

receiving, by the instance of the transcoder process and from the browser-based application, one or more packets sent by the browser-based application using the browser-supported application layer protocol, the one or more packets encapsulating data that the browser-based application formatted in accordance with remote display protocol;

extracting, by the instance of the transcoder process, the data formatted in accordance with the remote display protocol from the one or more packets that were sent by the browser-based application that is executed within the browser on the client device and received by the transcoder process using the browser-supported application layer protocol;

submitting the data formatted in accordance with the remote display protocol to the remote display server;

receiving, by the instance of the transcoder process and from the remote display server, data formatted in accordance with the remote display protocol;

creating one or more packets formatted in accordance with the browser-supported application layer protocol and including the data formatted in accordance with the remote display protocol within the one or more packets; and

sending the one or more packets formatted in accordance with the browser-supported application layer protocol to the browser-based application that is executed within the browser on the client device.

Assignments (20)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
MERGER Recorded May 9, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 059912/0109 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
RELEASE OF REEL 037848 FRAME 0210 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040031/0725 →
RELEASE OF REEL 037848 FRAME 0001 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0152 →
RELEASE OF REEL 037847 FRAME 0843 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040017/0366 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 037848/0210 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037847/0843 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037848/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2015
From: FAUSAK, ANDREW; ROMBAKH, OLEG
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 037292/0962 →