Xpra: Ticket #1559: Websocket proxing

Dear XPRA team,

We have a setup, where we deployed multiple XPRA servers, which are running on localhost. At the same time, we developed Websocket proxy, which allows users to connect using html client.

Our problem is that after some time, we get an error message "server connection is not responding, drawing spinners" on the client side.

The data flow described in the following:

HTML client <--> Java Websocket Proxy <--> Java Websocket Client Simulator <--> Xpra Server

We suppose that Client simulator transmits a way more packages, than client is able to handle.

This issue does not apper, if we run something simple (basic Windows or Amiga emulators). However it is a big problem, in case of GPU depending applications like Graveyard http://tale-of-tales.com/TheGraveyard/. We are using multiple Xdummy servers and virtualGl.

What would be your tips for our usecase?

Sincerely, Oleg



Wed, 28 Jun 2017 15:52:17 GMT - Antoine Martin: owner, component changed; milestone set

We suppose that Client simulator transmits a way more packages, than client is able to handle.

I assume that you mean that the server sends too many packets?

Does the problem go away if you go straight through without using your proxy? (why do you need it?) What is the "Java Websocket Client Simulator" and what does it do? Can you reproduce the problem by running the python client with a websocket connection? Using a websocket URI, ie:

xpra attach ws/HOST:PORT/

The type of application used shouldn't matter much, only the amount of pixels that need to be transferred. Can you reproduce with a test application like "glxgears" or "glxspheres"?


Wed, 28 Jun 2017 17:36:17 GMT - oleg.z:

Replying to Antoine Martin:

We suppose that Client simulator transmits a way more packages, than client is able to handle.

I assume that you mean that the server sends too many packets?

Yes, XPRA server sends us packets faster, than we are able to forward

Does the problem go away if you go straight through without using your proxy? (why do you need it?)

Yes. We do not face this problem, if we go straight to the endpoint without using proxy. We developed it, in order to have multiple xpra sessions on one port and to retrieve sessions ourselves without client interference. So, from the client side, xpra window appears just by a single click.

What is the "Java Websocket Client Simulator" and what does it do?

It forwards packets from our Proxy to the Xpra Server and vica versa (we mentioned it, because it might cause a mess with ping messages).

Can you reproduce the problem by running the python client with a websocket connection? Using a websocket URI, ie:

xpra attach ws/HOST:PORT/

Our framework uses links with the following pattern: "{host}:{port}/{other components}/{id}/xpra/". It seems that python client does not support this format. It considers "/{other components}/{id}/xpra/" as a display number.

The type of application used shouldn't matter much, only the amount of pixels that need to be transferred. Can you reproduce with a test application like "glxgears" or "glxspheres"?

We can reproduce the same issue, if we run it with high resolution. Glxgears with regular resolution works more or less fine. We still can see the spinner, but it disappears after a short time.


Wed, 12 Jul 2017 12:19:09 GMT - Antoine Martin: status changed; resolution set


Sat, 23 Jan 2021 05:27:39 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1559