使用 ServerEndpoint 时获取客户端 IP 地址
Getting client IP ADDRESS when using ServerEndpoint
意味着,它将从本地网络中的许多用户那里获得连接。我怎样才能获得每个连接的IP地址?我用的是JSR356.
@ServerEndpoint(value = "/ws/example")
public class ExampleServlet {
private static final AtomicInteger connectionIds = new AtomicInteger(0);
private static final Set<ExampleServlet> connections = new CopyOnWriteArraySet<>();
private Session session;
@OnOpen
public void start(Session session) {
this.session = session;
connections.add(this);
}
@OnClose
public void end() {
}
@OnMessage
public void incoming(String message) {
}
@OnError
public void onError(Throwable t) throws Throwable {
}
}
这是针对 spring 的 websocket
@覆盖
public void afterConnectionEstablished(WebSocketSession session) 抛出异常{
System.out.println("connectionestablished!"+session.getLocalAddress());
}
遗憾的是,JSR356 Websocket 规范不公开客户端 IP 地址。解决方案,如何破解这个,我在那里找到:JSR-356 WebSockets with Tomcat - How to limit connections within single IP address?
意味着,它将从本地网络中的许多用户那里获得连接。我怎样才能获得每个连接的IP地址?我用的是JSR356.
@ServerEndpoint(value = "/ws/example")
public class ExampleServlet {
private static final AtomicInteger connectionIds = new AtomicInteger(0);
private static final Set<ExampleServlet> connections = new CopyOnWriteArraySet<>();
private Session session;
@OnOpen
public void start(Session session) {
this.session = session;
connections.add(this);
}
@OnClose
public void end() {
}
@OnMessage
public void incoming(String message) {
}
@OnError
public void onError(Throwable t) throws Throwable {
}
}
这是针对 spring 的 websocket
@覆盖
public void afterConnectionEstablished(WebSocketSession session) 抛出异常{
System.out.println("connectionestablished!"+session.getLocalAddress());
}
遗憾的是,JSR356 Websocket 规范不公开客户端 IP 地址。解决方案,如何破解这个,我在那里找到:JSR-356 WebSockets with Tomcat - How to limit connections within single IP address?