Cool. So what we have now with novnc is our Grails application, which sends through an Apache instance, in front of a bunch of nodes, where we run the sessions(around 400 at any given time). Each node has novnc/websockify on it, which is a recent change, by another coworker for performance, before we had a couple of websockify instances in front of the nodes. Each session usually has one user working on it, but could share it with more people. On the nodes we run one of several CAD like applications. I don't know all the specifics of the servers, but I know the nodes have dedicated GPUS and a good amount of memory.
For the POC I did, I had the connection setup in our Grails webapp, and guacd on the nodes. However, we are also spreading out into multiple data centers, to reduce latency. So what I'm thinking of doing is spiting the websocket connection out into a separate webapp/service, decoupling that part from the main app, and have the client route/connect based on the data center the node is started on.