The current threading architecture blocks an entire worker thread for the duration of a WebSocket connection. This means that once a certain number of WebSocket connections are established, the server will be completely unable to serve new requests.
We need some way to either change the architecture so that idle workers can be released back to the server, or provide a limit on the number of simultaneous WebSocket connections that can be made to the server, in order to avoid this denial-of-service situation.