On 03/06/2012 21:26, Christian Finckler wrote: > Am 03.06.2012 19:50, schrieb Mark Thomas: >> On 31/05/2012 18:45, Christian Finckler wrote: >>> >>> Am 31.05.2012 11:09, schrieb Mark Thomas: >>>> On 31/05/2012 10:02, Christian Finckler wrote: >>>>> Hello, >>>>> as far I understood, the websocket implementation of tomcat is >>>>> using one >>>>> thread per client. >>>>> Is there also a possibility to configure it to use non blocking IO? >>>> No. That has not yet been implemented. It shouldn't be too hard >>>> provided >>>> that non-blocking is used between messages and blocking is used during >>>> messages. Obviously, the BIO connector will always use blocking. >> Whoops. My bad. I implemented this already. NIO and APR/native will be >> non-blocking between messages and have been since the first Tomcat >> release to include WebSocket support. Note that all connectors will >> block between the point the upgrade is started and the first message is >> sent. >> >> This was on my to-do list for a while and I simply forgot I had actually >> implemented. Had I looked at the code first (like I just did) it would >> have been clear that this was implemented. >> >> Sorry for the mis-information. >> >> Mark > Hello Mark, > you have confused me a bit. So there isn't one thread for each websocket > client used?
For the BIO connector it is always one thread <==> one connection. You cannot do non-blocking IO with the blocking IO connector. For NIO and APR/native is: - as many connections as you like up to maxConnections - one thread <==> WebSocket frame The threads are taken from the connector's connection pool and are returned once the WebSocket frame has been read. Reads are non-blocking between frames but blocking during a frame (to save having track detailed state between reads) Writes are always blocking. In short, if the client isn't sending any data, Tomcat doesn't allocate a thread to read it. The poller monitors the connection and passes it to a thread when there is a message to read. > If not. What are the configuration possibilities for that? maxThreads, maxConnections on the connector just like HTTP. > And how to do it? Use the NIO or APR/native connector and it just works. > Perhaps you can describe more deeply how you handle websockets in regard > of blocking/non blocking and thread handling? See above. If you want more detail, look at the source code. I am not going to translate that into pseudo code for you. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org