jakarta-ee - 使用 ServerEndpoint 时获取客户端 IP 地址

标签 jakarta-ee java-websocket

意味着,它将从本地网络中的许多用户那里获得连接。我怎样才能获得每个连接的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 {
     }
}

最佳答案

不幸的是,JSR356 Websocket 规范不公开客户端 IP 地址。解决方案,如何破解这个,我在那里找到:JSR-356 WebSockets with Tomcat - How to limit connections within single IP address?

关于jakarta-ee - 使用 ServerEndpoint 时获取客户端 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37543009/

相关文章:

ssl - 阻止 Tomcat 发送 header "Connection: close"

JavaScript - WebSocket send() 方法未执行

java - 如何防止值强烈引用其键?

java - 如何将 @Entity 和 @XmlRootElement 组合在一个类中

java - 了解 ejb-link 标记

Java Servlet 翻译API请求编码问题: german characters

javascript - 如何将 WebSocketServlet 添加到具有上下文路径的嵌入式 Jetty 服务器?

frameworks - 我应该从头开始我的 Seam 项目还是从 seam-gen 生成的项目开始?

java - 使用注释时忽略 `web.xml` 中的过滤器顺序?

spring-boot - Spring WebFlux 认证的 WebSocket 连接