2012-03-25 76 views
1

我在netty上编写了一个简单的websocket服务器。在客户端连接被接受之前,服务器必须验证客户端(通过另一个http服务器)。认证请求可能需要几秒钟的时间。所以,我在一个单独的线程中执行身份验证请求。当客户端连接到服务器时,我会向线程池提交一个新的auth任务。 Webscoket握手操作将在认证后的同一个线程中完成。 从netty服务器设计中应用线程池是否正确?在上游通道处理程序中应用线程池

我阅读了有关ExecutionHandler的信息,但在我的服务器中成功验证完成后,我没有任何阻塞任务。

回答

0

我想我只是使用一个ExecutionHandler,并将其从ChannelPipeline中删除,一旦你不再需要它。这应该保持简单..

+0

某些客户端可以断开连接并稍后连接。所以,如果我删除了ExecutionHandler,这些客户端将阻止主I/O循环。 – 2012-03-26 07:06:22

+0

一旦客户端断开通道,并且相关的ChannelPipeline也得到回收。一旦客户端再次连接,它将得到一个新的ChannelPipeline,再次添加ExecutionHandler – 2012-03-26 07:15:26