【问题标题】:Getting IP Address of the remote peer in Websocket API for Java EE 7在 Java EE 7 的 Websocket API 中获取远程对等点的 IP 地址
【发布时间】:2013-01-16 16:00:16
【问题描述】:

如何在 Websocket API for Java Glassfish 中获取远程对等点的 IP 地址?

【问题讨论】:

    标签: glassfish websocket ip-address


    【解决方案1】:

    getRemoteAddr()

    您需要将您的套接字会话实例转换为 TyrusSession,它实现了标准 JSR-356 会话接口。

    您可能需要升级 Tyrus,因为我不确定您的版本是否支持此方法。我正在使用Tyrus 1.7,它对我来说很好用。这里是how to upgrade

    【讨论】:

      【解决方案2】:

      另外一个方法,基于this answer到另一个问题,就是获取HandshakeRequest的headers。您要查找的标头是以下任一。

      origin: [IP Address]
      x-forwarded-for: [Possibly a separate IP]
      

      为了清楚起见,这是我的设置,以及我是如何发现的:

      • MyMachine:6060 上的 Wamp 2.5。这承载了一个客户端 HTML 页面。
      • LabMachine:6060(正常连接)和 LabMachine:6443(安全连接)上的 Wamp 2.5。这充当代理。
      • MyMachine:8080(正常)和 MyMachine:8181 (SSL) 上的 GlassFish 4.0。这是端点。

      我通过自己的机器、实验室机器和同事的机器连接到客户端页面。在每种情况下,WebSocket 请求的原始标头都是

      http://MyMachine:6060

      但是,在每种情况下,x-forwarded-host 标头都不同,与实际客户端的 IP 地址相匹配。

      【讨论】:

        【解决方案3】:

        WebSockets 基于 HTTP 请求。因此,您可能在某处扩展了HttpServletWebSocketServlet,因此从HttpServletRequest 获取IP 的常用方法应该可行:

        例子:

        public class WebSocketsServlet extends HttpServlet {
        
            private final WebSocketApplication app = new WebSocketApplication();
        
            @Override
            public void init(ServletConfig config) throws ServletException {
                WebSocketEngine.getEngine().register(
                    config.getServletContext().getContextPath() + "/context", app);
            }
        
            @Override
            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
                System.out.println("IP: " + req.getRemoteAddr());
                super.doGet(req, resp);
            }
        
        }
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-11
        • 1970-01-01
        • 2010-09-28
        • 2010-12-26
        • 1970-01-01
        • 2012-03-22
        • 2012-08-05
        • 2013-07-09
        相关资源
        最近更新 更多