2012-03-25 71 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