Nginx 클 러 스 터 + websocket 웹 socket 클 라 이언 트 의 실제 IP 가 져 오기
2936 단어 Springboot
2. 자바 프로그램 중
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import javax.websocket.server.ServerEndpointConfig.Configurator;
import org.apache.commons.lang.StringUtils;
public class HttpSessionConfigurator extends Configurator {
@Override
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
HttpSession httpSession = (HttpSession) request.getHttpSession();
sec.getUserProperties().put(HttpSession.class.getName(), httpSession);
Map> headers = request.getHeaders();
List addressMap = new ArrayList();
String realAddress;
try {
addressMap = headers.get("x-forwarded-for");
if (addressMap == null || addressMap.size() == 0) {
addressMap = headers.get("Proxy-Client-realAddress");
}
if (addressMap == null || addressMap.size() == 0) {
addressMap = headers.get("WL-Proxy-Client-realAddress");
}
if (addressMap == null || addressMap.size() == 0) {
realAddress = "";
} else{
realAddress = addressMap.get(0);
if(StringUtils.isEmpty(realAddress)){
realAddress = "";
}
}
} catch (Exception e) {
realAddress = "";
}
sec.getUserProperties().put("realAddress", realAddress);
}
}
@ServerEndpoint(value="/ws/{sid}/{stype}",configurator = HttpSessionConfigurator.class)
@OnOpen
public void onOpen(Session session,EndpointConfig config ,@PathParam("sid") String sid, @PathParam("stype") String stype) {
String realAddress = (String) config.getUserProperties().get("realAddress");
this.session = session;
webSocketSet.add(this); // set
addOnlineCount(); // 1
LogUtil.getLoger("xxxx.ws").info(" :"+realAddress+"/"+sid+"/"+stype+", " + getOnlineCount());
this.sid=sid;
try {
sendMessage("connected");
} catch (IOException e) {
LogUtil.getLoger("cnyy.ws").info("websocket IO ");
}
}
이상
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.