Java 如何获得客户';谁的IP地址?(弹簧WebFlux WebSocket)
正如标题所说,可以说,您如何获得连接的详细信息。有没有办法让它通过WebSocketSession?我觉得我错过了什么 我需要一种方法来禁止坏用户的ip地址,而且我想在地图上显示所有在线用户(就像地图上的一个点)。我不需要以后的帮助,我需要获得客户IP地址的帮助 我正在使用Spring的WebFlux WebSocketJava 如何获得客户';谁的IP地址?(弹簧WebFlux WebSocket),java,spring-boot,spring-webflux,Java,Spring Boot,Spring Webflux,正如标题所说,可以说,您如何获得连接的详细信息。有没有办法让它通过WebSocketSession?我觉得我错过了什么 我需要一种方法来禁止坏用户的ip地址,而且我想在地图上显示所有在线用户(就像地图上的一个点)。我不需要以后的帮助,我需要获得客户IP地址的帮助 我正在使用Spring的WebFlux WebSocket 编辑:我创建了一个功能请求:WebSocketSession有一个名为getRemoteAddress()的方法,您可以使用它的任何实现来获取远程地址。例如,您可以使用Http
编辑:我创建了一个功能请求:WebSocketSession有一个名为getRemoteAddress()的方法,您可以使用它的任何实现来获取远程地址。例如,您可以使用HttpServletRequest来查找ip地址
String remoteHost = request.getRemoteHost();
String remoteAddr = request.getRemoteAddr();
if (remoteAddr.equals("0:0:0:0:0:0:0:1")) {
InetAddress localip = java.net.InetAddress.getLocalHost();
remoteAddr = localip.getHostAddress();
remoteHost = localip.getHostName();
}
基于Servlet的
WebSocketSession
对象确实提供了这些信息。这似乎是缺少反应的味道
你应该创建一个。我是通过
public Mono<ServerResponse> hello(ServerRequest request) {
String remoteAddr = request.remoteAddress().get().getAddress().getHostAddress());
return null;
}
公共Mono hello(服务器请求){
字符串remoteAddr=request.remoteAddress().get().getAddress().getHostAddress());
返回null;
}
但是,请注意,您获得的远程地址不一定是实际客户端的地址。这可能是不可能实现的。常规WebSocketSession将此作为一种方法,但被动(WebFlux)WebSocket似乎没有这种方法。导入org.springframework.web.reactive.socket.WebSocketSession;反应式websocket支持没有公开任何与servlet相关的API;您可能将一些东西与基于servlet的websocket支持混为一谈。