2016-01-22 169 views
1

我試圖發展與Netty的下面用例:(8900端口)上多端的Netty套接字服務器

  1. 客戶端連接到中間服務器。
  2. 客戶端發送帶有配置的處理器請求到另一臺機器。
  3. 第三臺基於配置的機器啓動一個處理器。
  4. 處理器根據配置中標識的端口(例如端口8901)連接到啓動處理器的服務器。
  5. 服務器現在基於兩者之間共享的匹配唯一散列來綁定客戶端和處理器。
  6. 爲每個新的客戶端連接創建新的處理器。

客戶端連接不成問題。我有一個ClientHandler來處理這些請求。但是我註冊ProcessorHandler時(它必須根據客戶端發送的配置動態綁定)並且爲特定客戶端服務。

任何幫助將非常感激,因爲我目前就如何從ClientHandler的,一旦一個處理器配置是送的,我可以在服務器上啓動一個新的服務器套接字和鏈接客戶端它的處理器難倒。

客戶端和處理器共享一個唯一的散列號,可用於識別哪個處理器應該服務於哪個客戶端。

我基本上一直在使用Netty HexProxy Example想法,但我不需要客戶端套接字,而需要另一個服務器套接字來爲處理器服務。我正在考慮通過向其他管道添加處理程序或執行與Netty SecureChat Example類似的操作來連接兩者。

回答

0

通過重新想象我能解決這個問題的場景。

而不是將客戶端視爲客戶端,將處理器視爲服務於特定客戶端請求的服務器我將兩者視爲連接到聊天服務器(中介服務器)的客戶端。

任意服務器端口是通過將引導程序發送到一個HandshakeHandler來建立的,該協議綁定並同步當前未綁定的端口。

它也是HandshakeHandler,它通過獨特的哈希將客戶端和處理器連接到特定的ChannelGroup,並根據需要爲每個通道重新配置通道管道(一旦客戶端和處理器之間的握手成功完成,就自行移除)。

相關問題