簡體   English   中英

如何從Tyrus Websocket客戶端獲取本地IP地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM