java.net.http를 사용하는 WebSocket 클라이언트
서드파티 의존성을 추가하는 대신 표준 비동기 WebSocket 클라이언트를 사용합니다.
코드 비교
✕ Third-party library
WebSocketClient client =
new WebSocketClient(serverUri) {
@Override
public void onMessage(String message) {
handle(message);
}
};
client.connect();
✓ Java 11+
HttpClient.newHttpClient()
.newWebSocketBuilder()
.buildAsync(serverUri,
new WebSocket.Listener() {
@Override
public CompletionStage<?> onText(
WebSocket socket,
CharSequence data,
boolean last) {
handle(data.toString());
return WebSocket.Listener.super
.onText(socket, data, last);
}
});
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
추가 의존성 없음
WebSocket 클라이언트가 JDK에 포함되어 있습니다.
비동기 API
연결 및 메시지 처리를 CompletionStage와 조합할 수 있습니다.
공유 HTTP 스택
프록시, TLS 및 실행자 구성에 표준 JDK 기능을 사용합니다.
이전 방식
서드파티 WebSocket 클라이언트
모던 방식
java.net.http.WebSocket
JDK 버전
11
난이도
중급
JDK 지원
java.net.http를 사용하는 WebSocket 클라이언트
사용 가능
JDK 11 (2018년 9월) 이후 널리 사용 가능
동작 원리
java.net.http 패키지는 표준 HTTP 클라이언트와 통합된 비동기 WebSocket 클라이언트를 포함합니다. 연결은 CompletableFuture로 설정되고, 리스너 콜백은 CompletionStage를 통해 논블로킹 메시지 처리를 지원하며, 클라이언트는 JDK의 표준 프록시, TLS 및 실행자 구성을 공유합니다.
관련 문서
증명