Support for xpra #132

baaaaaaaaaaaaaam opened this Issue Feb 23, 2012 · 2 comments


None yet

3 participants


I was wondering if you had put any thought into noVNC supporting xpra.

xpra uses SSH by default but can also be tunneled over TCP. You can run an xpra server and client on the same machine (analogous to how you'd setup a VNC server and client with noVNC).

I would think that the key issue is that xpra is a different protocol than RFB, but I haven't been able to wrap my around it further. I'd like to build support for xpra in noVNC if it's possible, but I'm not positive on the best way to do so.

I'd appreciate your thoughts.

Well done, by the way -- this is an extraordinary project.

kanaka commented Feb 23, 2012

Sounds like an interesting protocol to support in noVNC. noVNC currently only supports the RFB (VNC) protocol but I designed it (and intended it) to be able to support any remote desktop protocol (RDP, Spice, etc). The noVNC code is divided into several functional modules. Here is the wiki page covering the APIs for the modules. The RFB module (include/rfb.js) has all the RFB protocol handling is in that module.

noVNC does all the protocol handling, websockify is just a bridge between WebSockets and TCP sockets that allows binary data to be sent even when using the older Hixie version of the WebSocket protocol version doesn't support binary data directly. Because noVNC does all the protocol handling, there are some things to avoid if possible that are still relatively slow in Javascript. For example bit-wise operations are still fairly slow. This means that it is best to negotiate streams that are not compressed at a bit level (like zlib/deflate). There is an exception that looks like it might apply to xpra which is that if you can have regular image data sent over the stream then noVNC can draw this directly to the canvas without decompressing first in Javascript. See the tightPNG encoding implementation in noVNC which replaces the tight encodings regular zlib compressed data with PNG image data which can be blit directly to the canvas.


closing due to age.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment