Jetty 8 - websockets: как я могу получить IP-адрес клиента? - PullRequest
2 голосов
/ 01 февраля 2012

Простое задание.Я использую реализацию сервера websockets от пристани, и мне нужно получить IP-адрес клиента, но я не знаю, как.

Ответы [ 4 ]

5 голосов
/ 01 февраля 2012

Я думаю, что это так же, как всегда, захватить IP с HTTPServletRequest#getRemoteAddr(), как это:

public class WSServlet extends WebSocketServlet {

    ...
    ...

    @Override
    public WebSocket doWebSocketConnect(HttpServletRequest req, String str) {
        System.out.println("IP: "+ req.getRemoteAddr());
        ...
    }
}
1 голос
/ 25 августа 2018

Если вы используете org.eclipse.jetty.websocket.api.Session, я бы пошел на:

session.getRemoteAddress().getAddress().getHostAddress();
0 голосов
/ 22 марта 2015

Без 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);
    }
0 голосов
/ 24 августа 2012

Если вам это нужно для целей аутентификации, вы можете получить его так:

Это всего лишь пример:

@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
...