我的应用程序通过Tomcat 8.5(servlet 3.1)的JSR 356实现使用Web套接字。根据JSR,它应该使用NIO,但是我不确定是否了解。
当客户端请求Web套接字连接时,客户端与服务器之间将创建永久会话。在这种情况下,我想知道客户端或服务器的每个请求是否由Tomcat池的不同线程处理,或者同一线程是否始终专用于此连接。
此外,该线程如何处理请求?它是否等待例如JDBC调用(阻塞IO),或者在这种情况下是否已释放(NIO)?与众所周知只使用NIO的Netty相比,Tomcat的线程模型在websocket情况下如何不同/相似?
当有要处理的数据时,会从池中分配一个线程来处理WebSocket连接上的传入数据。完成后,线程将返回到池中。可能(实际上是)每次都使用不同的线程。
传出消息将使用阻塞或非阻塞IO,具体取决于使用了API的哪一部分。
JDBC调用通常会阻塞,但是由JDBC驱动程序控制。应用程序如何处理JDBC调用以及与WebSocket消息的关系(如果有)取决于应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句