jetty8-websockets:如何获取客户端IP地址



简单的任务。我正在使用jetty实现的websockets服务器,我必须获得客户端IP地址,但我不知道如何获得。

我认为它和以前一样,像这样从HTTPServletRequest#getRemoteAddr()获取IP:

public class WSServlet extends WebSocketServlet {
    ...
    ...
    @Override
    public WebSocket doWebSocketConnect(HttpServletRequest req, String str) {
        System.out.println("IP: "+ req.getRemoteAddr());
        ...
    }
}

如果您使用org.eclipse.jetty.websocket.api.Session,我会选择:

session.getRemoteAddress().getAddress().getHostAddress();

没有WebServletSocket:

public static String getClientIp(Session session) {
        String ip = session.getUserProperties().get("javax.websocket.endpoint.remoteAddress").toString();
        int i1 = ip.indexOf("/");
        int i2 = ip.indexOf(":");
        return ip.substring(i1 + 1, i2);
    }

如果您出于身份验证目的需要它,您可以这样获得:

这只是一个例子:

@Override
public boolean canPublish(BayeuxServer server, ServerSession client,
                          ServerChannel channel, ServerMessage messsage) {
  //
  BayeuxContext context=server.getContext();
  System.out.println(context.getRemoteAddress());
  return true;
}

请记住,getRemoteAddress返回一个InetSocketAddress字符串。所以你还有一个端口,看起来像这样:

/79.111.111.22:49372

相关内容

  • 没有找到相关文章

最新更新