분류 전체보기41 웹 소켓 연결 끊김 감지하기 Summary 클라이언트A가 서버와 소켓 연결을 끊을 경우(Disconnect) 서버에 해당 소식을 전달하고, 소식을 접한 서버가 나머지 클라이언트들에게 클라이언트A의 연결이 끊겼음을(퇴장했음을) 알리는 형태를 구성하고 싶었다. 사용자가 Disconnect 버튼을 직접 눌러서 서버와 소켓 연결을 끊을 경우엔 연결이 끊기기 직전 서버 쪽으로 알림 요청을 먼저 보내는 방법이 채택 가능하겠으나, 사용자들은 브라우저의 탭을 닫는 등 (개발자 기준)비정상적인 방법을 많이 이용한다. 그래서 우리는 Disconnect 버튼과 관계없이, 클라이언트와 연결이 끊기면 서버에서 이를 감지해내는 방법을 찾아야 했다. @EventListener + SessionDisconnectEvent @Configuration public.. 2021. 7. 25. 스프링 웹소켓 기본 구성 Configuration @Configuration 어노테이션을 사용 중인 클래스에 @EnableWebSocketMessageBroker 어노테이션을 추가하여 사용 할 수 있다. 어노테이션이 추가되고 나면 web-socket을 이용한 메세지 브로커가 활성화 된다. @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry registry) { // 구독주소. 주소를 구독한 클라이언트는 모든 브로드캐스팅 메세지를 수신한다. regist.. 2021. 7. 25. private IP 만으론 인터넷 연결이 불가능한가? AWS EC2 인스턴스 4개를 이용해 서비스 인프라를 구축하려 할 때, 루트가 "WAS랑 DB한테 public IP를 할당할 필요가 있어?" 라는 이야기를 꺼냈다. 어차피 클라이언트와 통신을 주고 받아야하는 Web Server(Reverse Proxy)와 우리가 직접 접속해야 할 Bastion은 public IP가 필수로 필요하지만, 그 외에 같은 IP 대역을 사용하고 있어서 private IP로 통신이 가능한 WAS와 DB한테는 public IP를 할당할 필요가 없다는 말이었다. 좋은 의견인 것 같아 결국 WAS, DataBase 인스턴스의 public IP를 할당하지 않았고(private IP만 남긴 상황), Bastion을 통해 ssh 연결을 성공했다. 그런데 몇 가지 설정을 진행하던 중에 sudo.. 2021. 7. 24. 소켓 기본 개념 정리 babble 프로젝트의 가장 핵심이 되는 채팅방을 구현하기 앞서, 소켓에 대한 기본 개념을 되짚어 보고자 했다. Network IPC: Socket pipe, FIFO, message queue, semaphore, shared memory 등은 하나의 컴퓨터, 단말 내부의 프로세스 간 통신(Inter Process Communication) 방법이다. socket는 서로 다른 컴퓨터, 단말의 프로세스 간 통신을 지원하는 방법 중 하나다. 통신의 종점을 추상화해둔 것이다. 즉, 소켓은 서로 다른 단말 간의 통신이라기보다 서로 다른 단말의 애플리케이션 간 통신을 돕는 API라고 생각하면 된다. 운영체제에서 Socket 프로세스가 파일 디스크립터를 이용해 파일에 접근하는 방법과 동일하게, 소켓 디스크립터를 .. 2021. 7. 24. WebSocket 시작하기 클라이언트가 서버에 갱신된 정보를 어떻게 빠르게 가져올 수 있을까? 이런 고민을 한 이유: HTTP의 한계 무상태성: 클라이언트의 상태를 기억하지 않기 때문에 클라이언트에게 갱신된 정보를 알려줄 수 없다. 비연결성: 1개의 리퀘스트로 부터 응답을 하면 연결이 끊어진다. Polling 주기적으로 클라이언트가 request를 보내 새로운 정보를 갱신하는 방법 장점 구현이 단순하다. 단점 주기적으로 HTTP 연결을 맺고 끊는게 상당한 클라이언트와 서버 측에서 모두 큰 부담이 된다. 이를 어느 정도 해결하기 위해 전송하는 데이터 양을 줄이기 위해 ajax를 사용한다. Long Polling(HTTP/1.1) 클라이언트와 서버가 계속 연결을 맺고 끊는 것을 줄이기 위해서 만든 방법. 일단 클라이언트가 서버로 HT.. 2021. 7. 20. 이전 1 2 3 4 5 다음