我可以在@ServletEndpoint
类的@OnOpen
方法中获取远程IP地址吗?我尝试遵循此Accessing HttpSession from HttpServletRequest in a Web Socket @SocketEndpoint,但在Websocket - httpSession returns null中它不起作用。
反正我只需要客户端的IP地址。
我可以在@ServletEndpoint
类的@OnOpen
方法中获取远程IP地址吗?我尝试遵循此Accessing HttpSession from HttpServletRequest in a Web Socket @SocketEndpoint,但在Websocket - httpSession returns null中它不起作用。
反正我只需要客户端的IP地址。
3条答案
按热度按时间ecr0jaav1#
JSR-356 WebSocket规范不公开客户端IP地址。
您可以尝试在此响应中描述的2黑客之一:JSR-356 WebSockets with Tomcat - How to limit connections within single IP address?
6jjcrrmo2#
补充:适用于Jetty实现,这不是一个常见的解决方案。感谢本杰明!
不知道你还用不需要,我自己直接从socket Session上获取IP。
然后我得到/127.0.0.1:57045
pexxcrt23#
通常,客户端是Web应用程序交付的网页中的一些Javascript代码。
让客户端先获取一个servlet,调用req.getRemoteAddr()等Servlet返回此数据,然后Javascript可以将数据作为@PathParam发送到@ServerEndpoint。