WebSocket在连接时获取远程IP

w41d8nur  于 2023-01-13  发布在  其他
关注(0)|答案(3)|浏览(344)

我可以在@ServletEndpoint类的@OnOpen方法中获取远程IP地址吗?我尝试遵循此Accessing HttpSession from HttpServletRequest in a Web Socket @SocketEndpoint,但在Websocket - httpSession returns null中它不起作用。
反正我只需要客户端的IP地址。

ecr0jaav

ecr0jaav1#

JSR-356 WebSocket规范不公开客户端IP地址。
您可以尝试在此响应中描述的2黑客之一:JSR-356 WebSockets with Tomcat - How to limit connections within single IP address?

6jjcrrmo

6jjcrrmo2#

补充:适用于Jetty实现,这不是一个常见的解决方案。感谢本杰明!
不知道你还用不需要,我自己直接从socket Session上获取IP。

@OnOpen
public void onWebSocketConnect(Session session) {
    System.Out.println(session.getUserProperties().get("javax.websocket.endpoint.remoteAddress"))
}

然后我得到/127.0.0.1:57045

pexxcrt2

pexxcrt23#

通常,客户端是Web应用程序交付的网页中的一些Javascript代码。
让客户端先获取一个servlet,调用req.getRemoteAddr()等Servlet返回此数据,然后Javascript可以将数据作为@PathParam发送到@ServerEndpoint。

相关问题