![](/img/trans.png)
[英]Tyrus WebSockets (Java) - how to set client local ip address
[英]How to get the local ip address from a Tyrus websocket client
我正在編寫一個Java websocket客戶端,該客戶端需要知道其自己的IP地址,即用於連接服務器端點的接口的IP地址 。
由於客戶端可能會更改地址,因此每當它們(重新)連接到服務器時,都必須更新本地地址。 使用Jetty的客戶端可以輕松實現這一點,因為其Session類具有getLocalAddress()方法。
另一方面,Tyrus的會話課 缺乏這種能力 。 一個簡單的解決方法是使用普通的舊套接字。 每當調用客戶端的onOpen
時,我只要打開服務器的常規TCP套接字,獲取套接字的本地地址,然后將其關閉即可。 但這很浪費而且容易出錯,所以我寧願深入研究Tyrus並從其套接字獲取本地地址。 有辦法嗎?
Tyrus是JSR356( javax.websocket
)的實現,因此,此級別的信息不可用。
Jetty比JSR356和Tyrus早3年,並且已經從WebSocket中學到了很多人們需要的東西。
您必須等到javax.websocket
2.0版,然后祈禱它可以添加此級別的信息,然后才能使用它。
注意:
javax.websocket
2.0目前沒有任何計划或工作在進行中,JSR的專家組已經閑置了一年多。
您極不可能從Tyrus獲得此信息,因為它依賴於javax.servlet.http.HttpServletRequest.upgrade()
,后者使用javax.servlet.http.HttpUpgradeHandler
,該javax.servlet.http.WebConnection
傳遞給了javax.servlet.http.WebConnection
容器的javax.servlet.http.WebConnection
。 這兩個對象都沒有公開連接信息。
該泰魯斯實施的javax.servlet.http.HttpUpgradeHandler
甚至沒有單獨跟蹤這些信息在JSR356層包括。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.