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