멋사 Backend 58일차 🦁

신재원·2023년 7월 13일

📢 Spring

WebSocket (웹 소켓)

  • 기존의 HTTP 통신의 경우에서는 클라이언트의 "요청"에 대한 서버의 "응답" 입니다.
    ➡ 이러한 점은 서버가 능동적으로 데이터를 보내기가 어렵습니다.
    EX : 채팅, 알림, 주식과 같은 실시간 데이터 조회 등

위와 같은 HTTP 통신 규약의 단점을 해소하고자 웹 소켓 통신 규약 방식을 사용할수 있습니다.

웹 소켓이란 ?

클라이언트와 서버간의 TCP 연결을 길게 유지하고, 서로 "양방향" 으로 통신하며 "실시간" 데이터를 전달해주는 통신규약 입니다.

  • ❗ 클라이언트의 요청 없이 원하는 시점에 데이터가 넘어 옵니다.
  • 아래의 사진처럼 HTTP 헤더에 websockt이라는 정보를 담아 요청합니다.

웹 소켓을 사용하려면 의존성을 추가 해줘야 합니다.
implementation 'org.springframework.boot:spring-boot-starter-websocket'

  • 웹 소켓 핸들러
  • TextWebSocketHandler : 문자열 메시지 기반으로 통신하기 때문에 메소드를 재정의 하여 사용합니다.

양방향 채팅 통신을 확인할수 있습니다.

STOMP

  • 단순히 데이터만 보내는 통신 규약인 WebSocket 통신 과정에서,
    어떤 방식으로 통신을 할지가 아닌 주고받는 메시지의 모양이 어떻게 생겨야 하는지를 정의합니다.
    EX : 채팅방 생성, TOPIC 구독

Refernce

https://velog.io/@koseungbin/WebSocket
https://velog.io/@qkrqudcks7/STOMP%EB%9E%80

📌 default 메소드

  • 인터페이스에서는 기능에 대한 틀만 작성하기 때문에 기능에 대한 동작 코드를 작성할수 없습니다.

➡ 자바 8 버전 이후 default 메소드를 통해 위와 같은 규칙이 깨지게 되었습니다.
➡ 인터페이스 내부에서 default 를 붙인 메소드를 작성하면 로직이 포함된 코드를 작성할수있습니다.

public interface Vehicle {
    default void print(String car) {
        System.out.println("I want to " + car);
    }
}
 
public class Car implements Vehicle {
    public static void main(String[] args) {
        Car car = new Car();
        car.print("benz");
    }
}

❓ 사용 이유

기존의 코드를 최대한 수정하지 않으면서 설계된 인터페이스에 새로운 기능을 추가하고 가능하게 하기위해 사용합니다.

0개의 댓글