Улучшенное получение IP адреса за nginx
This commit is contained in:
@@ -155,13 +155,23 @@ public class Server extends WebSocketServer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen(WebSocket socket, ClientHandshake arg1) {
|
||||
public void onOpen(WebSocket socket, ClientHandshake handshake) {
|
||||
/**
|
||||
* Создаем нового клиента при открытии соединения.
|
||||
* Передаем интервал heartbeat из настроек сервера.
|
||||
* Если клиент не отправляет heartbeat в указанный интервал, его можно отключить.
|
||||
*/
|
||||
Client client = new Client(socket, this.settings.heartbeatInterval, this);
|
||||
String ipAddress = handshake.getFieldValue("X-Forwarded-For");
|
||||
if (ipAddress == null || ipAddress.isEmpty()) {
|
||||
ipAddress = socket.getRemoteSocketAddress().getAddress().getHostAddress();
|
||||
} else {
|
||||
/**
|
||||
* Берем первый IP адрес из списка разделенного запятой
|
||||
*/
|
||||
ipAddress = ipAddress.split(",")[0].trim();
|
||||
}
|
||||
client.setIpAddress(ipAddress);
|
||||
socket.setAttachment(client);
|
||||
if(this.listener == null){
|
||||
return;
|
||||
|
||||
@@ -29,6 +29,10 @@ public class Client {
|
||||
* Интервал отправки heartbeat пакетов в миллисекундах.
|
||||
*/
|
||||
public long heartbeatInterval = 0;
|
||||
/**
|
||||
* IP-адрес клиента
|
||||
*/
|
||||
private String ipAddress;
|
||||
/**
|
||||
* Время последнего полученного heartbeat в миллисекундах.
|
||||
*/
|
||||
@@ -71,6 +75,22 @@ public class Client {
|
||||
this.lastHeartbeatTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает IP адрес клиента
|
||||
* @return адрес
|
||||
*/
|
||||
public String getIpAddress() {
|
||||
return this.ipAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает IP адрес клиента
|
||||
* @param ipAddress адрес
|
||||
*/
|
||||
public void setIpAddress(String ipAddress){
|
||||
this.ipAddress = ipAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает уникальный идентификатор клиента.
|
||||
* @return Идентификатор клиента.
|
||||
|
||||
Reference in New Issue
Block a user