netty如何解決一個應用既作為客戶端又作為服務端的問題?
一個通訊鏈路中有三個應用,A,B,C;A只作為客戶端,B既為A的服務端,又作為C的客戶端,而C為B的服務端;
通訊鏈路為A—B—C,C的返回信息經B處理後再返回給A。
netty小白諮詢如何使用netty實現,謝謝各位大神。
可不可以在B的Handler的channelRead裡面起一個客戶端,就跟A差不多,然後讓這個客戶端去訪問C,返回的數據放在Bytebuf裏,這個Bytebuf是B的Handler裏定義的,可以同過set方法設置值。但是這樣A每次請求B的時候,B調用channelRead就會再起一個客戶端連接C,就算每次連接C返回數據後關閉,感覺效率也不高。我也是netty小白,以上都是瞎猜的。
寫兩個netty
寫一個netty server,寫一個netty client,在一個進程中不就行了
這種代理需要開兩個socket
B作為AC的服務端即可
首先AC都連接B,B保存AC的連接
A發送消息給B,B處理後發送給C
C返回消息給B,B處理後返回給A
關鍵技術點在於連接的時候保存2條連接為長連接即可實現三方通信
你的B應用寫兩個netty就好啦,一個用來做服務端接收,另一個做客戶端。互不幹擾
推薦閱讀: