JAVA · 파일/IO
WebSocket 클라이언트
Java 11+의 WebSocket API로 실시간 양방향 통신을 구현합니다.
파일/IO고급WebSocket양방향통신실시간Java11
핵심 설명
Java 11+의 WebSocket API로 실시간 양방향 통신을 구현합니다.
Java code
import java.net.http.*;
import java.net.URI;
import java.util.concurrent.*;
public class WebSocketDemo {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
CompletableFuture<Void> done = new CompletableFuture<>();
// WebSocket 연결
WebSocket ws = client.newWebSocketBuilder()
.buildAsync(
URI.create("wss://echo.websocket.events"),
new WebSocket.Listener() {
@Override
public void onOpen(WebSocket webSocket) {
System.out.println("연결됨!");
webSocket.request(1); // 메시지 요청
}
@Override
public CompletionStage<?> onText(WebSocket webSocket,
CharSequence data, boolean last) {
System.out.println("수신: " + data);
webSocket.request(1);
if (data.toString().contains("종료")) {
done.complete(null);
}
return CompletableFuture.completedFuture(null);
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket,
int statusCode, String reason) {
System.out.printf("닫힘: %d %s%n", statusCode, reason);
done.complete(null);
return CompletableFuture.completedFuture(null);
}
@Override
public void onError(WebSocket webSocket, Throwable error) {
System.err.println("에러: " + error.getMessage());
done.complete(null);
}
}).join();
// 메시지 전송
ws.sendText("Hello WebSocket!", true);
ws.sendText("종료", true);
done.get(10, TimeUnit.SECONDS);
ws.sendClose(WebSocket.NORMAL_CLOSURE, "정상 종료");
}
}학습 팁
request(1)로 배압을 제어합니다. 메시지를 처리한 후 다음 메시지를 요청하면 과부하를 방지할 수 있습니다.
주의할 점
WebSocket Listener의 메서드에서 예외가 발생하면 연결이 끊어집니다. 모든 콜백에서 예외 처리를 하세요.
자주 묻는 질문
WebSocket 클라이언트란 무엇인가요?
Java 11+의 WebSocket API로 실시간 양방향 통신을 구현합니다.
WebSocket 클라이언트 학습 시 주의할 점은 무엇인가요?
WebSocket Listener 의 메서드에서 예외가 발생하면 연결이 끊어집니다. 모든 콜백에서 예외 처리를 하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.